一、UNION 和 UNION ALL关键字用法及区别
用法:UNION和UNION ALL都是对两个查询结果进行并集操作
区别:1.UNION对两个查询结果集进行并集操作后会进行去重、排序
2.UNION ALL对两个查询结果只集进行并集操作,并不会有其他操作,因此相比于UNION来说性能更加高效。
示例:
id | emploee_name | emploee_sex |
---|---|---|
1 | 李四 | 1 |
2 | 张三 | 0 |
3 | 王五 | 1 |
4 | 赵六 | 1 |
id | emploee_name | emploee_sex |
---|---|---|
1 | 李四 | 0 |
2 | 牛得华 | 0 |
3 | 薛之前 | 1 |
4 | 王德莱 | 1 |
现有如下需求:
1.老板要获取到国内地区及美国地区公司的所有人员名单
SELECT emploee_name from emploee_china UNION ALL SELECT emploee_name from emploee_america
查询结果为:
emploee_name |
李四 |
张三 |
王五 |
赵六 |
李四 |
牛得华 |
薛之前 |
王德莱 |
可以发现查询结果包括了重复姓名->"李四"。
2.由于中国地区员工名称与美国地区员工名称有相同的,老板要去重之后的名单
SELECT emploee_name from emploee_china UNION SECECT emploee_name from emploee_name
查询结果为:
emploee_name |
李四 |
张三 |
王五 |
赵六 |
牛得华 |
薛之前 |
王德莱 |
可以发现查询结果只有一个姓名为"李四"的员工。
总结:UNION会对两个结果集进行并集、去重、排序,UNION ALL只会对两个结果集进行并集操作,所以在效率上相比UNION ALL效率更加高效,如果不需要去除重复值的话可以使用UNION ALL。