一个查询会产生一个特定的数字。查询是:
select
count(distinct case when (A or B or C) and D then table_a.field1 else null end)
from table_a
left join table_b on table_b.x = table_a.y
group by table_a.y
;
其中 A、B、C 和 D 是给定的条件。现在,写成这样的形式:
select
sum((select count(1) from table_b where table_b.x = table_a.y and ((A or B or C) and D) ))
from table_a
left join table_b on table_b.x = table_a.y
group by table_a.y
;
结果与我们使用 count(distinct) 得到的结果不匹配。
用子查询编写 count(distinct) 的正确方法是什么?