Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql COUNT(*)返回多行而不是一行_Mysql_Count - Fatal编程技术网

Mysql COUNT(*)返回多行而不是一行

Mysql COUNT(*)返回多行而不是一行,mysql,count,Mysql,Count,当我只需要查询生成的行总数时,为什么COUNT()返回多行 应返回1078 不要使用分组方式,它会计算每组的数量。好的,简单的答案。如果不需要分组,请不要分组 如果要对组进行计数,可以使用COUNT(DISTINCT articles.company)而不使用groupby,或者保留groupby并将整个查询包装在中,从(…)选择COUNT(*)作为数据。当您放入group by子句时,count()会给出group by的结果。如果希望获取包含分组依据的查询中的行数,请将其用作子查询 比如:

当我只需要查询生成的行总数时,为什么COUNT()返回多行

应返回1078


不要使用分组方式,它会计算每组的数量。

好的,简单的答案。如果不需要分组,请不要分组

如果要对组进行计数,可以使用
COUNT(DISTINCT articles.company)
而不使用
groupby
,或者保留
groupby
并将整个查询包装在
中,从(…)选择COUNT(*)作为数据。当您放入
group by
子句时,
count()
会给出
group by
的结果。如果希望获取包含
分组依据的查询中的行数,请将其用作子查询

比如:

SELECT COUNT(*) FROM (SELECT * FROM `table`
                      GROUP BY `column1`) AS `a`

将上面的查询写为子查询,这样它将给出正确的结果,并且不使用GROUPBY

select count(*) from (select articles.id from 'contract_prices' left join 'articles' on (arcticles.id = contract_prices.article) where 'contract_to' >= curdate() ) 从中选择计数(*)(从“合同价格”中选择articles.id左键连接上的“articles” (arcticles.id=合同价格条款) 其中'contract_to'>=curdate() )
实际上我需要分组,所以它应该返回正确的数字。@silkfire是的。如果需要,它将返回每个组的计数。如果你想返回所有物品的数量,只需删除群组。谢谢,你的答案就是我需要的。谢谢@silkfire。如果这解决了您的问题,请将其标记为答案。