使用UNION处理结果重复

时间:2015-11-13 12:05:21

标签: mysql sql mysql-workbench bdd

我对此查询有疑问:

Select id count(*)
....
....
....
....
UNION
Select id count(*)
.....
.....
.....
.....

输出是:

04123158->  32
04123158->  17
04123412->  36
04132010->  1473

我需要输出如下:

04123158->  49
04123412->  36
04132010->  1473

使用两个与UNION类似的ID时出现问题。我希望只有一个结果。

我该怎么做?

1 个答案:

答案 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删除重复项。这会在查询中产生不必要的开销。为什么要增加额外的性能开销?