数据模拟
员工表(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 |
目的
查询出员工在信息表没有数据的员工姓名,效果如下
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
)
参考
SQL - 如何编写从 LEFT JOIN 结果中减去 INNER JOIN 结果的 SQL 查询?