UNION 联合查询
目录
一、概述
UNION
UNION ALL
二、注意事项
性能考虑
排序
子查询限制
三、实际应用场景
数据整合
分段查询
参考文献以及数据来源
一、概述
Union联合操作,用于合并两个或者多个select语句的结果集。
它是一种将多个查询结果组合在一起的方式,但与多表连接不同,它并不基于表之间的关系进行数据的匹配和组合,而是简单将查询结果堆叠在一起。
UNION
默认去重:union默认去掉重复行
列数必须相同:参与union的所有语句必须返回相同数量的列,并且相应的列的数据类型要兼容。
列名来着第一个查询:最终结果集的列名有第一个select语句定义。
SELECT * FROM emp where name like '%三%'
union
SELECT * FROM emp where managerid BETWEEN 6 and 10 ORDER BY managerid DESC;
UNION ALL
不希望去掉重复项,可以使用这个,它比union更快,因为它不需要执行额外的去重操作。
SELECT * FROM emp where name like '%三%'
union all
SELECT * FROM emp where managerid BETWEEN 6 and 10 ORDER BY managerid DESC;
二、注意事项
性能考虑
如果知道结果集中不会出现重复行,或者不在乎出现重复行,那么使用UNIONALL会更高效,因为它不需要去重处理。
排序
如果想对整个结果集进行排序,可以在最后一个select语句 使用order by 子句。
子查询限制
每个select语句可以包含自己的WHERE、GROUPBY或HAVING子句,但是这些子句只能应用于各自的查询,而不能影响整个查询结果集。
三、实际应用场景
数据整合
当需要从不同来源获取数据并将其作为一个整体来看待时,UNION就非常有用。
例如,合并不同部门的员工信息。
分段查询
由于数据量过大,你可能需要将查询分成几个部分来执行,然后使用UNION将结果合并起来。
参考文献以及数据来源
使用数据来源MySQL学习(三)——多表连接查询_多表关联查询-CSDN博客