这样试试,看看有什么区别,分析一下就明白了
select * from (select * from a union select * from b) 
union all
select * from (select * from a union select * from b)

解决方案 »

  1.   

    SQL> select * from a;      COL1 COL2
    ---------- ----------
             1 aa
             2 bb
             3 cc
             4 de
             5 eeeSQL> select * from b;      COL1 COL2
    ---------- ----------
             1 aa
             1 ab
             1 ac
             2 bb
             2 bc
             3 cc
             4 dd已选择7行。SQL> select * from (select * from a union select * from b)
      2  ;      COL1 COL2
    ---------- ----------
             1 aa
             1 ab
             1 ac
             2 bb
             2 bc
             3 cc
             4 dd
             4 de
             5 eee已选择9行。SQL> select * from (select * from a union select * from b) 
      2  union
      3  select * from (select * from a union select * from b);      COL1 COL2
    ---------- ----------
             1 aa
             1 ab
             1 ac
             2 bb
             2 bc
             3 cc
             4 dd
             4 de
             5 eee已选择9行。怎么不一样啊。晕。
      

  2.   

    光union是会去掉重复的和加了distinct一样
    你必须用union all这样,不要偷懒少写all 就可以了。