12

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

应该返回 1078。

在此处输入图像描述

4

4 回答 4

30

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

就像是:

SELECT COUNT(*) FROM (SELECT * FROM `table`
                      GROUP BY `column1`) AS `a`
于 2013-08-19T09:00:31.513 回答
3

嗯,简单的回答。GROUP BY如果您不需要群组,请不要这样做。

如果要对组进行计数,请使用COUNT(DISTINCT articles.company)不带GROUP BY或保留 theGROUP BY并将整个查询包装在 a中。SELECT COUNT(*) FROM (...) AS data

于 2013-08-19T08:59:08.707 回答
1

不要使用group by,它会计算每个的数量。

于 2013-08-19T08:58:38.883 回答
0

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

select count(*) from (selectarticles.id from 'contract_prices' left join 'articles' on
    (arcticles.id = contract_prices.article)
    其中 'contract_to' >= curdate()
    )
于 2013-08-19T09:08:55.657 回答