MySQL选择计数
我试图从下面的查询中统计至少有一种产品的公司数量MySQL选择计数,mysql,count,Mysql,Count,我试图从下面的查询中统计至少有一种产品的公司数量 SELECT count(*) FROM company c JOIN product p on c.id = product.company_id WHERE p.is_deleted = 0 AND c.is_customer = 1 AND c.company_type_id = 5 GROUP by c.id 所以,这显示了所有公司的列表,以及每个公司的产品数量 我试图实现的是从上述结果中统计出一些公司 这可以通过以下方式实现: SEL
SELECT count(*)
FROM company c
JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
AND c.company_type_id = 5
GROUP by c.id
所以,这显示了所有公司的列表,以及每个公司的产品数量
我试图实现的是从上述结果中统计出一些公司
这可以通过以下方式实现:
SELECT count(*)
FROM (
SELECT count(*)
FROM company c
JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
and c.company_type_id = 5
GROUP by c.id) AS t1
因此,这给了我正确的结果,但我只是想知道是否有更有效的方法来做事情。我相信您可以将其简化为:
SELECT count(distinct c.id)
FROM company c
JOIN product p on c.id = product.company_id
WHERE p.is_deleted = 0
AND c.is_customer = 1
AND c.company_type_id = 5
看来你在这里干得不错。除非您真的遇到性能问题,否则我看不出有改进的余地。上面的查询将始终返回1?!你有一个
COUNT(*)
返回一个字段,然后你为一个字段再次选择COUNT(*)
。@我遗漏了什么吗?@另一个:内部COUNT(*)有一个分组依据
-它每个公司返回一个计数需要花费更多的时间阅读东西!错过了那里的分组。你不仅仅是在计算不同的公司吗?不是每个公司都有不同的产品吗?@另一个我想这就是问题所在-至少有一种产品的公司数量。@另一个shubery:查询将计算结果中有多少唯一的公司ID,并且结果将只过滤到至少有一种产品的公司。做得很好@Blorgbeard-我站着更正是的,我很抱歉我看错了要求。是的,Blorgbeard是正确的。