oracle union 与 union all,oracle --union和union all

当我们需要将两个select语句的结果作为一个整体显示时,就需要使用到union或者union all关键字。

union的作用是将多个结果合并在一起显示出来。

union和uinon all的区别是:union会对结果集中的重复结果去重,而union all则会将所有的结果全部显示出来。

union:对两个(或多个)结果集进行并集操作,不包括重复行,同时进行默认规则的排序。

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

可以在最后一个结果集中指定order by子句改变排序方式。

例子如下

用户表t_user如下

03f9978de9aaad4b830bbb9364611193.png

经销商表t_fchs如下

3448538dbf3769dfe211d82074105c9a.png

union连接两张表,只显示两个字段:名称和电话号码

select

*

from

(select

tu.user_name as name,tu.telephone

from

t_user tu)

union

(select

tf.fchs_name,tf.fchs_telephone

from

t_fchs tf)

结果如下:

c5e14d950d984b0445826f5b9e6df811.png

union all连接两张表

select

*

from

(select

tu.user_name as name,tu.telephone

from

t_user tu)

union all

(select

tf.fchs_name,tf.fchs_telephone

from

t_fchs tf)

结果如下:

a6c5f086804d5799e9a0804ba45282d0.png

由上可知:union是去重了的(去掉了 name:米乐 的那一行),union all全部显示出来。

二、intersect和minus的用法

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

例如:对t_user表和t_fchs表求交集

select

*

from

(select

tu.user_name as name,tu.telephone

from

t_user tu)

Intersect

(select

tf.fchs_name,tf.fchs_telephone

from

t_fchs tf)

结果如下:

9650e24cd190c3da3f0c36b0cde7b35c.png

备注:由两张表可知,交集的结果就只有这一个。

三、Minus的用法

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

minus的作用是去同留异

select

*

from

(select

tu.user_name as name,tu.telephone

from

t_user tu)

minus

(select

tf.fchs_name,tf.fchs_telephone

from

t_fchs tf)

结果如下:

a8950ad7b5af13c260bdfc9f9401c3b2.png

备注:t_user与t_fchs的差集操作得到的结果是

t_user中与t_fchs表中相同的去掉了,不同的(只针对t_user表)留下来了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值