联合查询 union ,union all
对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集。
select 字段列表 from 表A ,,,
select 字段列表 from 表B .....
查询语句1
UNION
查询语句2;
查询语句1
UNION ALL
查询语句2;
1. 最简单示例(合并两个部门查询)
sql
select dept.id, dept.name from dept where dept.id = 1
union
select dept.id, dept.name from dept where dept.id = 2;
sql
select dept.id, dept.name from dept where dept.id = 1
union all
select dept.id, dept.name from dept where dept.id = 2;
2. 合并不同表的结构相同数据
比如把员工姓名 和 部门姓名 放一列展示
sql
select emp.name from emp
union
select dept.name from dept;
sql
select emp.name from emp
union all
select dept.name from dept;
3. 多表查询 + UNION 组合
sql
select emp.name, dept.name
from emp
inner join dept
on emp.dept_id = dept.id
where dept.name = '研发部'
union
select emp.name, dept.name
from emp
inner join dept
on emp.dept_id = dept.id
where dept.name = '市场部';
-- 查询薪资<5000 并且年龄大于50 的员工。
select * from emp33 where salary <5000 and age>50;
-- 查询薪资低于5000 的员工,和年龄大于50 岁的员工的全部查询出来
select * from emp33 where salary <5000
union all
select * from emp33 where age>50;
union all有重复 会将全部的数据直接合并在一起,
union 会对合并之后的数据去重。