繁体   English   中英

使用 COUNT 和 GROUP BY 在 MySQL 中显示计数为 0 的行

[英]Displaying rows with count 0 in MySQL using COUNT and GROUP BY

我有两个表,主题和内容,其中内容使用外键引用主题。 我想显示每个主题在内容表中出现的次数(如果没有出现,则为 0)。 但是下面的查询只给了我计数 > 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;

我检查并尝试关注这个这个这个帖子,但由于某种原因,上面的代码不起作用。

有任何想法吗?

编辑:类型字段在内容表中,这导致了“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;

type属于哪个表? 如果typesubject中,您的左连接应该可以工作。 所以我假设该typeContent中。 那么问题是您的 WHERE 子句与Content中没有匹配行的情况不匹配。 利用

WHERE (type = @type) OR (type IS NULL)

改为进行外部联接。 将 null 替换为 0。将非 null 替换为 1。而不是计数,对此列求和。

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM