gpt4 book ai didi

mysql - 检查来自不同表的 ID

转载 作者:行者123 更新时间:2023-11-29 04:32:27 25 4
gpt4 key购买 nike

我有两个表:“rota”(1) 和“volunteer”(2)。名字和姓氏列在 (2) 中,但类次在 (1) 中。通过以下查询,我能够看到已提交类次的人员的姓名,但我想查看尚未提交的人员的姓名。无法弄清楚如何。有帮助吗?

SELECT COUNT(rota.shift_id), rota.volunteer_id, volunteer.firstname, volunteer.lastname
FROM rota
INNER JOIN volunteer ON rota.volunteer_id=volunteer.id
GROUP BY volunteer_id;

最佳答案

您需要一个LEFT JOIN -- 并将volunteer 表放在第一位,因为您需要该表中的所有行:

SELECT v.id, v.firstname, v.lastname, COUNT(r.shift_id), rota.volunteer_id
FROM volunteer v LEFT JOIN
rota r
ON r.volunteer_id = v.id
GROUP BY v.id;

请注意,您不需要在 GROUP BY 中包括来自 volunteer 的所有列,因为 v.id 唯一标识结果集。

编辑:

如果您想要没有轮类的志愿者,请使用NOT EXISTS:

SELECT v.*
FROM volunteer v
WHERE NOT EXISTS (SELECT 1
FROM rota r
WHERE r.volunteer_id = v.id
);

您可以使用 LEFT JOIN 等效地执行此操作:

SELECT v.id, v.firstname, v.lastname
FROM volunteer v LEFT JOIN
rota r
ON r.volunteer_id = v.id
WHERE r.volunteer_id IS NULL;

关于mysql - 检查来自不同表的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56902079/

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