我有两个表A
和B
,在这里你可以看到A
和B
A | id | title
-------------------------
1 | A1
2 | A2
3 | A3
B | A_id | title
-------------------------
1 | B1
1 | B2
1 | B3
我想做的是计算 B 中 A_id
的数量,我尝试了以下查询:
select A.title as "title",count(title) as "count" from A left join B on A.id = B.A_id
这将给我以下结果:
title | count
---------------
A1 | 3
A2 | 1
A3 | 1
A4 | 1
我需要的是:
title | count
---------------
A1 | 3
A2 | 0
A3 | 0
A4 | 0
最佳答案
您的查询问题:
您的查询缺少
GROUP BY
子句。您似乎正在使用禁用选项ONLY_FULL_GROUP_BY
的 MySQL 版本,因此,MySQL 不会向您抛出正确的错误,而是愉快地执行您的查询。count(title)
是不明确的,因为该列存在于两个表中。这应该会产生一个错误。您实际上想要依赖来自表B
的列;我会使用B.A_id
,以防万一B
中的某些记录的title
为空。
考虑:
select A.title, count(B.A_id) as `count`
from A
left join B on A.id = B.A_id
group by A.title
旁注:
在 MySQL 中,我建议对标识符使用反引号而不是双引号;这就是 MySQL 的做法
A.title as title
是重复的:它等同于A.title
关于mysql - 左连接和计数在 MYSQL 中不能正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59084763/