Oracle 专题
专题目录
您的位置:database > Oracle专题 > Oracle Union运算符
Oracle Union运算符
作者:--    发布时间:2019-11-20

在本教程中,您将学习如何使用oracle union运算符来组合由两个或多个查询返回的结果集。

oracle union运算符简介

union运算符是一个集合运算符,它将两个或多个select语句的结果集组合到一个结果集中。

以下说明了组合两个查询的结果集的union运算符的语法:

select
    column_list_1
from
    t1
union 
select
    column_list_1
from
    t2;

在此声明中,column_list_1column_list_2必须具有相同顺序的相同列数。 另外,对应列的数据类型必须是相同的数据类型组,例如数字字符

select
    column_list
from
    t1
union all 
select
    column_list
from
    t2;

oracle union图示

假设有两个表 - t1t2

  • t1有三行:1,23
  • t2也有三行:2,34

下图说明了t1t2表的union运算图示:

union运算符删除(消除)重复的行 - 23

下图显示了union all运算符t1t2表的结果:

正如上面所看到的,union all保留了重复的行 - 23

oracle union示例

请参阅示例数据库中的以下employees表和contacts表的er图结构。

oracle union示例1

假设,需要发送电子邮件到员工和联系人表的电子邮件地址。 要做到这一点,首先,需要撰写员工和联系人的电子邮件地址列表。然后发送电子邮件到列表中。

以下语句使用union运算符来构建员工和联系人表中的联系人列表:

select
    first_name,
    last_name,
    email,
    'contact'
from
    contacts
union select
    first_name,
    last_name,
    email,
    'employee'
from
    employees;

执行上面查询语句,得到以下结果 -

2. oracle union和order by示例

要对由union运算符返回的结果集进行排序,可以将order by子句添加到最后一个select语句中,如下所示:

select
    first_name || ' ' || last_name name,
    email,
    'contact'
from
    contacts
union select
    first_name || ' ' || last_name name,
    email,
    'employee'
from
    employees
order by
    name desc;

在这个例子中,将first_namelast_name连接起来,并使用一个别名:name,结果按name列排序。
执行上面查询代码,得到以下结果 -

3. oracle union all示例

以下语句返回员工和联系人的唯一姓氏(last_name):

select
    last_name
from
    employees
union select
    last_name
from
    contacts
order by
    last_name;

该查询返回了357个唯一的姓氏(last_name)值。参考下面结果 -

但是,如果在查询中使用union all而不是union,如下所示:

select
    last_name
from
    employees
union all select
    last_name
from
    contacts
order by
    last_name;

该查询返回426行。 另外,一些行是重复的,例如,atkinson, barnett。 这是因为union all操作符不会删除重复的行。

oracle union 与 join 区别

union将结果集放置在另一个上面,这意味着它将垂直地附加结果集。但是,诸如inner joinleft join的连接将结果集水平组合。

下图说明了unionjoin的区别:

在本教程中,您已经学习了如何使用oracle union运算符来组合多个查询的结果集。


网站声明:
本站部分内容来自网络,如您发现本站内容
侵害到您的利益,请联系本站管理员处理。
联系站长
373515719@qq.com
关于本站:
编程参考手册