写出一个查询语句,找到所有 丢失信息 的雇员id。当满足下面一个条件时,就被认为是雇员的信息丢失:
雇员的 姓名 丢失了,或者
雇员的 薪水信息 丢失了,或者
返回这些雇员的id employee_id , 从小到大排序 。
输入:
Employees table:
±------------±---------+
| employee_id | name |
±------------±---------+
| 2 | Crew |
| 4 | Haven |
| 5 | Kristian |
±------------±---------+
Salaries table:
±------------±-------+
| employee_id | salary |
±------------±-------+
| 5 | 76071 |
| 1 | 22517 |
| 4 | 63539 |
±------------±-------+
输出:
±------------+
| employee_id |
±------------+
| 1 |
| 2 |
±------------+
解释:
雇员1,2,4,5 都工作在这个公司。
1号雇员的姓名丢失了。
2号雇员的薪水信息丢失了。
语句
union all
UNION 内部的 SELECT 语句必须拥有相同数量的列;
列也必须拥有相似的数据类型(实际非必须);
同时,每条 SELECT 语句中列的顺序必须相同。
UNION 只会选取不同的值。
union all
UNION ALL 来选取重复的值
select employee_id
from (
select employee_id from Employees
union all
select employee_id from Salaries
) as t
group by employee_id
having count(*) = 1
order by employee_id ASC