mysql复合查询 -- 合并查询(union,union all)
目录
合并查询
介绍
表数据
union
使用场景
编辑
示例
union all
合并查询
介绍
它不像笛卡尔积那种,将行信息做乘法
- 合并只是单纯地合在一起
- 求的是两个结果集的并集,并且会自动去掉并集中的重复行
注意,因为是求并集,会将两个结果进行拼接
- 所以要保证列信息相同
表数据
两张表,某公司的正式员工表和承包商员工表(可能有员工拥有双重身份)
CREATE TABLE employees ( empno INT PRIMARY KEY, ename VARCHAR(50), job VARCHAR(50), deptno INT );
CREATE TABLE contractors ( empno INT PRIMARY KEY, ename VARCHAR(50), job VARCHAR(50), deptno INT ); INSERT INTO contractors (empno, ename, job, deptno) VALUES (4, 'JOHN', 'MANAGER', 10), (5, 'DAVIS', 'ANALYST', 20), (2, 'SMITH', 'ANALYST', 20);
union
用于合并两个或多个 SELECT 查询的结果。它会自动去除重复的行,只返回唯一的记录
使用场景
示例
获取所有的经理和分析师的姓名和职位,不论他们是正式员工还是承包商
- 需要将两张表的数据汇总到一起,且不能有重复数据
需要我们使用union关键字将两个sql语句连接:
select * from employees where job='MANAGER' or job='ANALYST' union select * from contractors where job='MANAGER' or job='ANALYST';
union all
如果不想去重,在union后+all