TypechoJoeTheme

Toasobi的博客

UNION使用

本文最后更新于2023年09月15日,已超过370天没有更新。如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!

**

  • 题目:

**

表:Employee

Column NameType
employee_idint
department_idint
primary_flagvarchar

这张表的主键为 employee_id, department_id (具有唯一值的列的组合)
employee_id 是员工的ID
department_id 是部门的ID,表示员工与该部门有关系
primary_flag 是一个枚举类型,值分别为('Y', 'N'). 如果值为'Y',表示该部门是员工的直属部门。 如果值是'N',则否

一个员工可以属于多个部门。当一个员工加入超过一个部门的时候,他需要决定哪个部门是他的直属部门。请注意,当员工只加入一个部门的时候,那这个部门将默认为他的直属部门,虽然表记录的值为'N'.

请编写解决方案,查出员工所属的直属部门。

返回结果 没有顺序要求 。

返回结果格式如下例子所示:

示例 1:

输入:

Employee table:
employee_iddepartment_idprimary_flag
11N
21Y
22N
33N
42N
43Y
44N
输出:
employee_iddepartment_id
11
21
33
43

解释:

  • 员工 1 的直属部门是 1
  • 员工 2 的直属部门是 1
  • 员工 3 的直属部门是 3
  • 员工 4 的直属部门是 3
这道题可以使用UNION解题
UNION,通俗来讲就是要么。。。要么。。。
在这道题中,要么主部门为只属于的那一个部门,要么主部门为primary_flag为‘Y’的部门
代码如下:
SELECT employee_id , department_id 
FROM Employee 
GROUP BY employee_id
HAVING COUNT(primary_flag) = 1
UNION
SELECT employee_id , department_id 
FROM Employee 
WHERE primary_flag = 'Y'
朗读
赞(0)
评论 (0)