oracle的 union,Oracle Union运算符

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

Oracle UNION运算符简介

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

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

SELECT

column_list_1

FROM

T1

UNION

SELECT

column_list_1

FROM

T2;

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

SELECT

column_list

FROM

T1

UNION ALL

SELECT

column_list

FROM

T2;

Oracle UNION图示

假设有两个表 - T1和T2:

T1有三行:1,2和3

T2也有三行:2,3和4

下图说明了T1和T2表的UNION运算图示:

94c425349bb812d4c192d974c08005e0.png

UNION运算符删除(消除)重复的行 - 2和3

下图显示了UNION ALL运算符T1和T2表的结果:

42666a97cc610d5607c6d0314df77410.png

正如上面所看到的,UNION ALL保留了重复的行 - 2和3。

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;

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

74fc6fda22cc1e9941bde7813dca9183.png

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_name和last_name连接起来,并使用一个别名:name,结果按name列排序。

执行上面查询代码,得到以下结果 -

da3995a15675d973f5222a4464b1d376.png

3. Oracle UNION ALL示例

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

SELECT

last_name

FROM

employees

UNION SELECT

last_name

FROM

contacts

ORDER BY

last_name;

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

417b378f2bbadbc7dc3a2f2df018c5a5.png

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

SELECT

last_name

FROM

employees

UNION ALL SELECT

last_name

FROM

contacts

ORDER BY

last_name;

该查询返回426行。 另外,一些行是重复的,例如,Atkinson, Barnett。 这是因为UNION ALL操作符不会删除重复的行。

a5a00aa99d198b385952195d1a3afb87.png

Oracle UNION 与 JOIN 区别

UNION将结果集放置在另一个上面,这意味着它将垂直地附加结果集。但是,诸如INNER JOIN或LEFT JOIN的连接将结果集水平组合。

下图说明了union和join的区别:

d7525e6bf24498f5db36b6c53e7da46c.png

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

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值