订阅更新

用唯一标识码替换员工 ID

SQL 实战 123 题 · 第 101 题 简单 约 2 分钟读完

LeetCode 1378 · LEFT JOIN、保留主表

本文目录
  1. 面试怎么回答
  2. 题意
  3. 表结构
  4. 思路
  5. 参考解法
  6. 易错点

面试怎么回答

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 会丢掉没有标识码的员工。
刷题进度保存在当前浏览器