gpt4 book ai didi

当数据不存在于另一个表中时,MySQL 连接也包含数据

转载 作者:行者123 更新时间:2023-11-29 11:37:29 24 4
gpt4 key购买 nike

我的数据库中有两个表:员工和员工假期。员工表只有一列用于员工姓名,员工假期有两列,一列包含员工姓名,另一列包含他们休假的日期。我有一个查询(正确地)返回员工姓名在假期表中出现的次数,但我正在尝试找出一种方法来返回员工姓名条目 | 0 表示员工姓名存在于employee 表中但不存在于employee_vacation 表中的情况。有没有办法修改这个查询来做到这一点?查询如下

select e.EMPLOYEE_NAME, COUNT(v.VACATION_DAY) AS VACATION_DAYS
from EMPLOYEE_VACATION as v
LEFT JOIN EMPLOYEES AS e USING(EMPLOYEE_NAME)
GROUP BY e.EMPLOYEE_NAME

最佳答案

你做得几乎是正确的。即使在employee_vacation表中没有行的情况下,要返回员工,您实际上需要切换连接,以便从包含所有员工和LEFT JOIN的表EMPLOYEES开始有关他们假期的信息:

SELECT e.EMPLOYEE_NAME, COUNT(v.VACATION_DAY) AS VACATION_DAYS
FROM EMPLOYEES e
LEFT JOIN EMPLOYEE_VACATION v USING (EMPLOYEE_NAME)
GROUP BY e.EMPLOYEE_NAME

或者简单地使用RIGHT JOIN(如果您懒的话,可以限制代码更改):

SELECT e.EMPLOYEE_NAME, COUNT(v.VACATION_DAY) AS VACATION_DAYS
FROM EMPLOYEE_VACATION v
RIGHT JOIN EMPLOYEES e USING (EMPLOYEE_NAME)
GROUP BY e.EMPLOYEE_NAME

我更喜欢使用LEFT而不是RIGHT连接,因为我从上到下阅读查询,这对我来说似乎更合乎逻辑,在尝试时不要向后走理解逻辑。

关于当数据不存在于另一个表中时,MySQL 连接也包含数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344253/

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