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。

comments如果有不同意见或者补充,直接留在这里。
contact

在别处继续找到我

如果你想聊技术、设计,或者只是打个招呼。

暂未配置外部链接