mysql - 如何从 MySQL 中的两个表中获取不同值的计数?

标签 mysql count left-join distinct

有两个表。第一个:blogCategories,第二个:blog。 表 blogCategories 只有 2 个字段,id 和 categoyName。前面插入了很多类别名称。表 blog 有 id、blogCatID、标题、博客、日期字段。 blog表中有很多记录。但并非所有类别名称都被使用。 我尝试获取 categoryNames 列表及其在博客中的使用次数。如果博客中未使用 categoryName,我需要 0(零)。

我使用了下面的查询。但是 categoryNames 计数为 1,即使它们没有被使用也是如此。

SELECT DISTINCT categoryName, COUNT(*) AS totalBlogCount
FROM
    (SELECT bc.categoryName
    FROM
        blogCategories bc
        LEFT JOIN blog b ON bc.id=b.blogCatID) AS tot
GROUP BY categoryName

最佳答案

以下查询将为您提供类别名称和使用次数。如果没有使用,那么它将返回 0 作为 count(null value)=0

SELECT bc.categoryName, COUNT(b.blogCatID) AS totalBlogCount 
FROM blogCategories bc Left JOIN blog b ON bc.id=b.blogCatID
GROUP BY categoryName

输出看起来像

inspirational 5
technical 2
political 0
random 3 

关于mysql - 如何从 MySQL 中的两个表中获取不同值的计数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20982592/

相关文章:

mysql - 连接3个表并对不同字段进行计数

php - 如何在 Laravel 5.3 中创建 session ID?

mysql - 如何在 MySQL 中找到非 ASCII 字符?

mysql - 在 MySQL 中使用空间索引时性能不佳

java - 如何一次从 JTable 数据库中删除多行

javascript - 如何有效地计算 JavaScript 中对象的键/属性的数量

yii - 使用 CDbCriteria 很难计算记录

java - for循环计算Java中的音节

mysql - 有人可以改进这个查询吗?

MySQL ORDER BY 导致 LEFT JOIN 速度极度减慢