使用count和GROUP BY在MySQL中显示计数为0的行
我有两个表,主题和内容,其中内容引用带有外键的主题。我想显示每个主题在内容表0中出现的次数(如果没有出现)。但是下面的查询只给出了count>0的行,而忽略了其他行:使用count和GROUP BY在MySQL中显示计数为0的行,mysql,count,outer-join,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 Su
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;
我检查并试图遵循,并张贴,但由于某种原因,上述代码不工作
有什么想法吗
编辑:
类型字段位于内容表中,这导致了问题,正如所指出的那样,执行外部联接。将空值替换为0。将非null替换为1。对该列进行求和,而不是计数
希望这有助于执行外部联接。将空值替换为0。将非null替换为1。对该列进行求和,而不是计数 希望这有助于哪一个表是a列类型?我假设它是内容-通过在WHERE子句中包含字段,您强制左连接右侧的内容表包含数据,这意味着左连接实际上只是一个内部连接 尝试: 类型a列在哪个表中?我假设它是内容-通过在WHERE子句中包含字段,您强制左连接右侧的内容表包含数据,这意味着左连接实际上只是一个内部连接 尝试: 列类型属于哪个表?如果type在subject中,您的左连接应该有效。所以我假设类型是内容。然后问题是WHERE子句与内容中没有匹配行的情况不匹配。使用 列类型属于哪个表?如果type在subject中,您的左连接应该有效。所以我假设类型是内容。然后问题是WHERE子句与内容中没有匹配行的情况不匹配。使用
不,COUNTsomething跳过null something。错误在WHERE vs JOIN中。不,COUNTsomething跳过null something。错误在WHERE vs 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;
WHERE (type = @type) OR (type IS NULL)