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

标签 mysql count outer-join

我有两个表,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;

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

有什么想法吗?

编辑: 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/

相关文章:

python - 如何计算列表中大于给定数字的元素的出现次数?

Mysql - 根据条件计算连续日期并获取范围列表

mysql - 具有复合连接条件的 SQL LEFT JOIN 如何工作

sql - 有哪些使用 SQL OUTER JOIN 的好例子?

PHP MySQL 区分大小写

mysql - 多重连接 - 具有引用相同表但具有不同值的单独列

sql - MySQL MyISAM 索引文本列

php - 更新数据库并更新变量

python - Dataframe - 获取最常见的值及其计数

mysql - 针对海量数据优化MySQL Full outer join