是否可以在select子句中使用count
,group by
在计数中被抑制?我需要count
忽略group by
子句
我得到了这个计算总数的查询。该查询是通用生成的,因此我不能进行任何全面的更改,如子查询等。
在某些特定情况下,需要group by来检索正确的行,因此无法删除group by
SELECT count(dv.id) num
FROM `data_voucher` dv
LEFT JOIN `data_voucher_enclosure` de ON de.data_voucher_id=dv.id
WHERE IF(de.id IS NULL,0,1)=0
GROUP BY dv.id
答案 0 :(得分:3)
是否可以在select
count
中使用group by
count
中的count
?我需要group by
忽略group by
子句
好吧,你问题的答案就是你不能拥有一个适用于所有结果的聚合,同时拥有group by语句。这就是{{1}}创建改变聚合行为的组的全部目的:
GROUP BY子句导致聚合在组中(自然地)发生在您命名的列中。
cf this blog post这只是我在谷歌上发现的第一个关于此主题的结果。
你需要重新设计你的查询,最简单的方法是创建一个子查询,或者一个关节的地狱。但是如果没有架构和关于你希望这个查询做什么的一些上下文,我不能给你一个有效的替代方案。
我可以告诉你,你正试图用锤子拧紧螺丝......
答案 1 :(得分:0)
找到了使用COUNT DISTINCT
的替代方案
SELECT count(distinct dv.id) num
FROM `data_voucher` dv
LEFT JOIN `data_voucher_enclosure` de ON de.data_voucher_id=dv.id
WHERE IF(de.id IS NULL,0,1)=0