用唯一标识码替换员工 ID
LeetCode 1378 · LEFT JOIN、保留主表
面试怎么回答
Employees LEFT JOIN EmployeeUNI ON id,SELECT unique_id, name。要求「没有就填 NULL」就是 LEFT JOIN 的语义。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
题意
员工表和员工唯一标识码表。输出每个员工的唯一标识码和姓名,没有标识码的员工显示 NULL。
表结构
- Employees:id(主键)、name
- EmployeeUNI:id、unique_id;(id, unique_id) 为主键
思路
以员工表为主表 LEFT JOIN 标识码表,没有标识码的员工 unique_id 自然为 NULL。
参考解法
select unique_id,e.name
from Employees e left join EmployeeUNI u
on e.id = u.id
易错点
- 用 INNER JOIN 会丢掉没有标识码的员工。