我对此查询有疑问:
Select id count(*)
....
....
....
....
UNION
Select id count(*)
.....
.....
.....
.....
输出是:
04123158-> 32
04123158-> 17
04123412-> 36
04132010-> 1473
我需要输出如下:
04123158-> 49
04123412-> 36
04132010-> 1473
使用两个与UNION类似的ID时出现问题。我希望只有一个结果。
我该怎么做?
答案 0 :(得分:2)
您可以使用union
(真正union all
)然后汇总:
select id, sum(cnt)
from ((select id, count(*) as cnt . . .
) union all
(select is, count(*) as cnt . . .
)
) i
group by id
注意:出于两个原因,您需要union all
。首先,union
删除重复项。因此,如果两个id
具有count(*)
的相同值,则union
将删除其中一行。 Union all
不会删除重复项。
其次,union
删除重复项。这会在查询中产生不必要的开销。为什么要增加额外的性能开销?