数据模拟
员工表(employee)
id (主键ID) | name (姓名) |
---|---|
1 | 小明 |
2 | 小红 |
3 | 小兰 |
4 | 小刚 |
5 | 小强 |
员工对应信息表(employee_info)
id (主键ID) | employee_id (外键,用户表ID) | sex (性别) | age (年龄) |
---|---|---|---|
1 | 2 | 女 | 18 |
2 | 3 | 女 | 15 |
3 | 5 | 男 | 16 |
目的
查询出员工在信息表没有数据的员工姓名,效果如下
id | name |
---|---|
1 | 小明 |
4 | 小刚 |
SQL 代码
第一种写法(LEFT OUTER JOIN 搭配 IS NULL 的写法)
sql
SELECT e.*
FROM employee e
LEFT OUTER JOIN employee_info ei ON e.id = ei.employee_id
WHERE ei.employee_id IS NULL
第二种写法(NOT EXISTS 写法)
sql
SELECT e.*
FROM employee e
WHERE NOT EXISTS (
SELECT 1
FROM employee_info ei
WHERE e.id = ei.employee_id
)