数据模拟
员工表(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 的写法)
SELECT e.*
FROM employee eLEFT OUTER JOIN employee_info ei ON e.id = ei.employee_id
WHERE ei.employee_id IS NULL
第二种写法(NOT EXISTS 写法)
SELECT e.*
FROM employee e
WHERE NOT EXISTS (SELECT 1FROM employee_info eiWHERE e.id = ei.employee_id
)
参考
SQL - 如何编写从 LEFT JOIN 结果中减去 INNER JOIN 结果的 SQL 查询?