union的特性,去重與不去重ide
集合操做有 並,交,差 3種運算。 排序
union :獲得兩個查詢結果的並集,而且自動去掉重複行。不會排序 it
union all:獲得兩個查詢結果的並集,不會去掉重複行。也不會排序 io
intersect:獲得兩個查詢結果的交集,而且按照結果集的第一個列進行排序 table
minus:獲得兩個查詢結果的減集,以第一列進行排序 class
例子: 原理
下面是兩個表:一個主修課程表,一個選修課程表。 select
這個是主修課程表:minors nio
create table minors( im
minor_id number primary key,
minor_name varchar2(30) not null,
credit_hour number(2)
)
插入3條記錄:
insert into minors values(10101,'計算機原理',4)
insert into minors values(10201,'自動控制原理',3)
insert into minors values(10301,'工程製圖原理',4)
下面建立選修課程表minors2
create table minors2(
minor_id number primary key,
minor_name varchar2(30) not null,
credit_hour number(2)
)
插入兩條記錄:
insert into minors2 values(10201,'自動控制原理',3)
insert into minors2 values(10301,'工程製圖原理',4)
(1)
兩個表使用union all:獲得以下結果
select minor_id,minor_name,credit_hour from minors union all
select minor_id,minor_name,credit_hour from minors2 order by credit_hour
結果:
MINOR_ID MINOR_NAME CREDIT_HOUR
---------- ------------------------------ -----------
10201 自動控制原理 3
10201 自動控制原理 3
10101 計算機原理 4
10301 工程製圖原理 4
10301 工程製圖原理 4
(2)
兩個表使用union :獲得以下結果
select minor_id,minor_name,credit_hour from minors union
select minor_id,minor_name,credit_hour from minors2 order by credit_hour
結果:
MINOR_ID MINOR_NAME CREDIT_HOUR
---------- ------------------------------ -----------
10201 自動控制原理 3
10101 計算機原理 4
10301 工程製圖原理 4
(3)
兩個表使用intersect :獲得以下結果
select minor_id,minor_name,credit_hour from minors intersect
select minor_id,minor_name,credit_hour from minors2
結果:
MINOR_ID MINOR_NAME CREDIT_HOUR
---------- ------------------------------ -----------
10201 自動控制原理 3
10301 工程製圖原理 4
(4)
兩個表使用minus :獲得以下結果
select minor_id,minor_name,credit_hour from minors minus
select minor_id,minor_name,credit_hour from minors2
結果:
MINOR_ID MINOR_NAME CREDIT_HOUR
---------- ------------------------------ -----------
10101 計算機原理 4
---------------------