测试必备的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 会进行去重,只保留一份数据
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