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