标签:strong 红色 图片 知识 from 没事 语法 最好 第一条
测试必备的Mysql常用sql语句系列
https://www.cnblogs.com/poloyy/category/1683347.html
[sql1] UNION [ALL | DISTINCT] [sql2] UNION [ALL | DISTINCT] [sql3] ....
select * from emp as a left join dept as b on a.dept_id = b.id union all select * from emp as a right join dept as b on a.dept_id = b.id;
蓝色圈子:第一条 sql 的查询结果
红色圈子:第二条 sql 的查询结果
select * from emp as a left join dept as b on a.dept_id = b.id union select * from emp as a right join dept as b on a.dept_id = b.id;
上图是去重之后的结果,而没有去重的结果可以看union all 的栗子或者下图
红色圈住的部分就是重复的数据,union 会进行去重,只保留一份数据
使用 union 连接的多条sql,每个 sql 查询出来的结果集的字段名称要一致【只需要名称一致即可,顺序可以不同,但建议相同】,可以看看下面的栗子
最终 union 连接查询的结果集的字段顺序会以第一个 sql 查出来结果集的字段顺序为基准
select name,id,leader,is_enable,dept_id from emp where dept_id = 1 union select * from emp where leader = 0
从上图可以看出,第二条 sql 查出来的字段顺序和最终结果集字段顺序明显不一样,导致数据错乱的问题
所以!!union 连接的每条 sql 指定的字段顺序最好一致!!
所以!!union 连接的每条 sql 指定的字段顺序最好一致!!
所以!!union 连接的每条 sql 指定的字段顺序最好一致!!
select * from emp where dept_id = 1 union select id,name,dept_id,leader,is_enable from emp where leader = 0
标签:strong 红色 图片 知识 from 没事 语法 最好 第一条
原文地址:https://www.cnblogs.com/poloyy/p/12884399.html