Mysql,使用 UNION ALL 处理 ‘无中生有‘ 的数据。

在SQL查询中,可以通过UNIONALL关键字来添加数据库表中没有的数据。文章举例说明了如何在查询结果中直接添加数据,以及根据逻辑判断追加不同值的方法,以满足某些特殊需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

   

       在日常的开发工作中,有时我们需要在SQL层面添加一些数据库表中没有的数据,那么我们就可以使用 UNION ALL 关键字来解决。

 

一、简单的无中生有:在查询返回结果中添加数据

       以下方的SQL1为例,我们根据 id 查询 user 表中的数据,但想将 name = "燕双鹰"、age = 70 的数据也添加上,使用 UNION ALL 完美的解决了这个问题。

SQL1

-- SQL1, 在查询结果中添加表中不存在的数据.
SELECT
 u.`name`,
 u.age
 
FROM user u
WHERE
 u.id = 4
UNION ALL
SELECT
 '燕双鹰' AS name,
 70 AS age
FROM DUAL
;

图一 

二、复制的无中生有:根据逻辑判断,追加不同的值.

    需求:这里有一个 name 模板,name值为:张三、李四、赵六, 当 user 表中含这些数据时,返回 name值 及对应的 age 值;如果表中不含 name 值,则也需要返回 name值 并将 age 值设为 0 。

     这个需求依旧可以使用 UNION ALL 来解决。这个需求看起来很无厘头,但现实的工作中总有各种奇葩的需求,身为程序员的我们也是挺无奈的!!!

    SQL2

SELECT
 CASE WHEN u.`name` = '张三' THEN u.`name` ELSE '张三' 
 END AS name,
 CASE WHEN u.`name` = '张三' THEN u.age ELSE 0 
 END AS age
 
FROM user u
WHERE
 u.id = 5
UNION ALL 
SELECT
 CASE WHEN u.`name` = '李四' THEN u.`name` ELSE '李四' 
 END AS name,
 CASE WHEN u.`name` = '李四' THEN u.age ELSE 0 
 END AS age
 
FROM user u
WHERE
 u.id = 4
UNION ALL
SELECT
 CASE WHEN u.`name` = '赵六' THEN u.`name` ELSE '赵六' 
 END AS name,
 CASE WHEN u.`name` = '赵六' THEN u.age ELSE 0 
 END AS age
 
FROM user u
WHERE
 u.id = 6
;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值