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