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

时间:2013-08-19 08:56:34

标签: mysql count

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

应该返回1078。

enter image description here

4 个答案:

答案 0 :(得分:17)

COUNT()按预期工作。当您输入group by子句时,count()会为您提供GROUP BY的结果。如果您希望获取包含group by的查询中的行数,请将其用作子查询。

类似的东西:

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

答案 1 :(得分:3)

嗯,简单的回答。如果您不需要小组,请不要GROUP BY

使用COUNT(DISTINCT articles.company)而不使用GROUP BY或保留GROUP BY并将整个查询包装在SELECT COUNT(*) FROM (...) AS data中,如果您想计算群组。

答案 2 :(得分:1)

不要使用分组,它会计算每个组的数量

答案 3 :(得分:0)

将上述查询写为子查询,然后它将给出正确的结果,并且不要使用group by

select count(*) from (select articles.id from 'contract_prices' left join 'articles' on
    (arcticles.id = contract_prices.article) 
    where 'contract_to' >= curdate()
    )