我有两个表,Subject 和 Content,其中 Content 使用外键引用 Subject。我想显示每个主题在内容表中出现的次数(0,如果没有出现)。但是下面的查询只给了我 count > 0 的行并忽略了其他行:
SELECT Subject.id, Subject.name, COUNT(Content.subject_id) AS `count`
FROM Subject LEFT JOIN Content
ON Subject.id = Content.subject_id
WHERE type = @type
GROUP BY Subject.id;
我检查并尝试关注 this 、 this 和 this 帖子,但由于某种原因,上面的代码不起作用。
有什么想法吗?
编辑: type 字段在 Content 表中,正如“Will A”指出的那样导致问题
最佳答案
type
列在哪个表中?我假设它是 Content - 通过在 WHERE 子句中包含该字段,您将强制 LEFT JOIN 右侧的 Content 表中包含数据(这意味着 LEFT JOIN 实际上只是内部连接)。
尝试:
SELECT Subject.id, Subject.name, COUNT(Content.subject_id) AS `count`
FROM Subject
LEFT JOIN Content
ON Subject.id = Content.subject_id
AND type = @type
GROUP BY Subject.id;
关于mysql - 使用 COUNT 和 GROUP BY 在 MySQL 中显示计数为 0 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6275246/