数据模拟
员工表(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
)