gpt4 book ai didi

mysql - 计算在其他表中至少有一个引用的主表行

转载 作者:行者123 更新时间:2023-11-29 05:50:31 25 4
gpt4 key购买 nike

假设数据库中有 3 个表 - classesboardtasks。其他两个表中的classes 表中有class_id 的FK 引用。

在某些情况下,对于特定的 class_id,两个表中的任何一个都没有引用,或者可能在一个表中有引用但在另一个表中没有引用。

目标是计算在两个表中的任何一个中至少有一个引用的所有

到目前为止我尝试了什么:

SELECT COUNT(c.class_id) FROM classes  as c
LEFT JOIN board as b on b.class_id = c.class_id
LEFT JOIN tasks as t on t.class_id = c.class_id

这实际上返回了 3 个表中所有实例的计数,而应该只返回主表的计数。

最佳答案

如评论中所述,您需要 OR 连词来提取 boardtasks 中引用的那些类(此 OR 不是互斥的,这意味着如果一个类在两个表中都被引用,则它也在结果集中。

我准备了一个 fiddle 给你玩:https://www.db-fiddle.com/f/xaa19Fk25bhtZh9EmGN42w/3

归结为:

SELECT COUNT(DISTINCT classes.class_id)
FROM classes
LEFT JOIN board ON classes.class_id = board.class_id
LEFT JOIN tasks ON classes.class_id = tasks.class_id
WHERE board.class_id IS NOT NULL OR tasks.class_id IS NOT NULL;

我还包含了之前的答案以表明它返回了错误的值。但是当然,除了 DISTINCT 之外,您还可以使用 GROUP BY 方法。只需保持 ANDOR 的顺序即可。

关于mysql - 计算在其他表中至少有一个引用的主表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54869934/

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