Oracle (Union all 与 Union 的使用)

1.概念

如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。

      union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复

      Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

      Union all:对两个结果集进行并集操作,包括重复行,不进行排序;

      Intersect:对两个结果集进行交集操作,不包括重复行,同时进行默认规则的排序;

      Minus:对两个结果集进行差操作,不包括重复行,同时进行默认规则的排序。

2.例子

1. union 与 union all 的区别

SQL> select * from jack where id<4   union   select * from jack where id >2 and id<6;

    ID NAME              SCORE

---------- -------------------- ----------

    1 Aaron            78

    2 Bill            76

    3 Cindy            89

    4 Damon            90

    5 Ella            73


SQL> select * from jack where id<4  union all  select * from jack where id >2 and id<6;

    ID NAME              SCORE

---------- -------------------- ----------

    1 Aaron            78

    2 Bill            76

    3 Cindy            89

    3 Cindy            89

    4 Damon            90

    5 Ella            73

已选择6行。

从上面的两个查询中可以看出它们的区别之一在于对重复结果的处理。

2.指定某个字段进行排序

SQL> select * from

   (

   select score,id,name from jack where id>2 and id<7

   union

   select score,id,name from jack where id<4

   union

   select score,id,name from jack where id>8

   )

    order by id desc;

    SCORE      ID NAME

---------- ---------- --------------------

    90      10 Jay

    93        9 Ivan

    61        6 Frado

    73        5 Ella

    90        4 Damon

    89        3 Cindy

    76        2 Bill

    78        1 Aaron

已选择8行。

3.注意

并集时要合并的列类型必须一致,列名可以不一致,两个合并的并集的列数必须一致

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。