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

如何从MySQL中的两个表中获取不同值的计数?,mysql,count,left-join,distinct,Mysql,Count,Left Join,Distinct,有两张桌子。第一:博客类别,第二:博客。 表blogCategories只有两个字段,id和categoyName。之前插入了许多类别名称。表blog包含id、blogCatID、标题、blog和日期文件。 表博客中有许多记录。但并非所有categoryName都被使用。 我试图得到一个分类名称列表,以及它们在博客中的使用数量。如果博客中没有使用categoryName,我需要0(零) 我使用了下面的查询。但categoryNames即使未被使用,也会得到计数1 SELECT DISTINCT

有两张桌子。第一:博客类别,第二:博客。 表blogCategories只有两个字段,id和categoyName。之前插入了许多类别名称。表blog包含id、blogCatID、标题、blog和日期文件。 表博客中有许多记录。但并非所有categoryName都被使用。 我试图得到一个分类名称列表,以及它们在博客中的使用数量。如果博客中没有使用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

首先计算已使用的blogCatID:

select blogCatID, count(*) as Number
from blog
group by blogCatID
稍后,您可以了解哪些博客类别未被使用:

select *
from blogCategories as bc
where bc.id not in (select blogCatID
    from blog
    group by blogCatID)
select isnull(b.numb, 0) as num, bc.*
from blogCategories as bc left join (select blogCatID, count(*) as numb
    from blog
    group by blogCatID) as b ON bc.id b.blogCatID
接下来,请尝试博客类别列表以及博客中的使用计数(如果未使用,则为0):


首先计算已使用的blogCatID:

select blogCatID, count(*) as Number
from blog
group by blogCatID
稍后,您可以了解哪些博客类别未被使用:

select *
from blogCategories as bc
where bc.id not in (select blogCatID
    from blog
    group by blogCatID)
select isnull(b.numb, 0) as num, bc.*
from blogCategories as bc left join (select blogCatID, count(*) as numb
    from blog
    group by blogCatID) as b ON bc.id b.blogCatID
接下来,请尝试博客类别列表以及博客中的使用计数(如果未使用,则为0):


下面的查询将为您提供categoryName和使用计数。如果没有使用,它将返回
0
作为
count(空值)=0

输出将看起来像

inspirational 5
technical 2
political 0
random 3 

下面的查询将为您提供categoryName和使用计数。如果没有使用,它将返回
0
作为
count(空值)=0

输出将看起来像

inspirational 5
technical 2
political 0
random 3 

那么一个博客只能有一个类别?是的。blogCatID(Int)字段只有一个类别id。将
左连接更改为
连接
@MarcusAdams这就像一个符咒一样解决了我的问题:)我需要认真学习sql!谢谢。@caglaror检查我下面的答案()。所以一个博客只能有一个类别?是的。blogCatID(Int)字段只有一个类别id。将
左连接更改为
连接
@MarcusAdams这就像一个符咒一样解决了我的问题:)我需要认真学习sql!谢谢。@caglaror请检查下面我的答案()。不确定您是对的还是我对的,这取决于是否需要0来表示不在博客中的类别:(啊,是的,没有想到;+1不确定你是对的还是我是对的,这取决于是否需要0来表示不在博客中的类别。:(啊,是的,没有想到;+1我需要0,即使不在博客组中,也需要0,即使不在博客组中,也需要0。)