gpt4 book ai didi

mysql - 如何为 MySQL 组合主键表编写 'optional' WHERE 子句

转载 作者:太空宇宙 更新时间:2023-11-03 12:09:28 25 4
gpt4 key购买 nike

我有两个表,staffstaff_datastaff 是一个普通表,staff_data 是一个 Type/Value 复合主键表(主键是 Staff_ID 和 Type 的组合)——所以数据样本看起来像这个:

+----------+--------------------+----------+
| Staff_ID | Type | Value |
+----------+--------------------+----------+
| 1 | Department | IT |
| 1 | Organisation | BigCorp |
| 821 | Department | Finance |
| 1 | NetworkUsername | smith.j |
+----------+--------------------+----------+

我的目标是查询将选择所有员工及其部门,但是如果他们没有在 staff_data 中列出的部门,它仍会选择他们,但会列出部门为空。

下面的查询只包括在 staff_data

中列出部门的员工
SELECT staff.name, staff_data.Value as Department 
FROM staff JOIN staff_data USING(Staff_ID)
WHERE staff_data.Type = ‘Department’
GROUP BY staff.Name

但是如果我不包含 WHERE 子句,显然我得不到我想要的数据。我如何编写一个查询来列出所有员工,包括他们的部门(如果存在)?

最佳答案

使用外连接:

SELECT staff.name, staff_data.Value as Department
FROM staff
LEFT OUTER JOIN staff_data
ON staff.Staff_ID = staff_data.Staff_ID
AND staff_data.Type = "Department"

在左外连接中,如果右表没有与约束匹配的值,则输出仍将包含左表中的行。 (来自右表的列将为空。)

关于mysql - 如何为 MySQL 组合主键表编写 'optional' WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24999753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com