当我只需要查询生成的行数总计时,为什么COUNT()会返回多行?
应该返回1078。
答案 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() )