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

tur*_*fer 1 mysql count outer-join

我有两个表,主题和内容,其中内容引用主题与外键.我想显示每个主题在内容表中出现的次数(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;
Run Code Online (Sandbox Code Playgroud)

我检查并试图按照这个,这个这篇文章但由于某种原因上面的代码不起作用.

有任何想法吗?

编辑:类型字段位于内容表中,导致问题为"Will A"指出

Wil*_*l A 5

哪个表是type一列?我假设它是内容 - 并且通过在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;
Run Code Online (Sandbox Code Playgroud)