gpt4 book ai didi

MySQL 使用 JOIN 语句计算匹配行数

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

我有两张 table groupsusers 。我想编写一个查询,返回 groups 中的行还有一个额外的列,显示 users 有多少行有一个gidid 匹配对应组的。我编写了一个运行良好的查询,但 users 中没有用户的情况除外。表与相应的 gid ,在这种情况下 group结果中被省略。

SELECT a.id, a.admin, a.name, COUNT(b.zbid) users FROM groups a LEFT JOIN users b ON b.gid=a.id

我该如何解决这个问题?我算出来了,肯定是COUNT这会破坏功能。为什么?好吧,如果我尝试以下操作:

SELECT a.id, a.admin, a.name, IF(ISNULL(b.zbid), 0, 1) users FROM groups a LEFT JOIN users b ON b.gid=a.id WHERE a.cid='1'

那么没有行被省略,它将显示 users对于具有相应用户的任何行,=1,否则为 0。但是,如果我将其更改为:

SELECT a.id, a.admin, a.name, IF(ISNULL(b.zbid), 0, COUNT(b.zbid)) users FROM groups a LEFT JOIN users b ON b.gid=a.id WHERE a.cid='1'

然后它再次省略行...

如有任何帮助,我们将不胜感激。

最佳答案

这是您的第一个查询:

SELECT a.id, a.admin, a.name, COUNT(b.zbid) as users
FROM groups a LEFT JOIN
users b
ON b.gid = a.id;

您需要包含 group by,例如 group by a.id 才能获取所有组的计数。

我怀疑您面临的问题是缺乏group by

关于MySQL 使用 JOIN 语句计算匹配行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24748696/

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