essay
hot50-使用唯一标识码替换员工ID
#mysql
hot50——使用唯一标识码替换员工ID
Employees 表:
| Column Name | Type |
|---|---|
| id | int |
| name | varchar |
在 SQL 中,id 是这张表的主键。
这张表的每一行分别代表了某公司其中一位员工的名字和 ID 。
EmployeeUNI 表:
| Column Name | Type |
|---|---|
| id | int |
| unique_id | int |
在 SQL 中,(id, unique_id) 是这张表的主键。
这张表的每一行包含了该公司某位员工的 ID 和他的唯一标识码(unique ID)。
展示每位用户的 唯一标识码(unique ID );如果某位员工没有唯一标识码,使用 null 填充即可。
你可以以 任意 顺序返回结果表。
返回结果的格式如下例所示。
示例 1:
输入:
Employees 表:
| id | name |
|---|---|
| 1 | Alice |
| 7 | Bob |
| 11 | Meir |
| 90 | Winston |
| 3 | Jonathan |
EmployeeUNI 表:
| id | unique_id |
|---|---|
| 3 | 1 |
| 11 | 2 |
| 90 | 3 |
输出:
| unique_id | name |
|---|---|
| null | Alice |
| null | Bob |
| 2 | Meir |
| 3 | Winston |
| 1 | Jonathan |
解释:
- Alice and Bob 没有唯一标识码, 因此我们使用 null 替代。
- Meir 的唯一标识码是 2 。
- Winston 的唯一标识码是 3 。
- Jonathan 唯一标识码是 1 。
答:
select e.name, eu.unique_id from Employees as e
left join EmployeeUNI as eu
on e.id = eu.id将两个表的数据基于 id 列进行组合。同样,我们使用 LEFT JOIN 来确保将所有 Employees 表中的行都包含在结果中,即使在 EmployeeUNI 表中没有匹配的行。
当你需要“所有...”(如所有员工、所有客户、所有商品)时,就要想到以这个“所有”的表作为左表,使用 LEFT JOIN。(包括为空的)
当你只关心“有...的...”(如“有订单的客户”、“有部门的员工”)时,才使用 INNER JOIN。