oracle并交差
轉載:http://chenhua-1984.iteye.com/blog/350354
集合操作有 并,交,差 3種運算。
union :得到兩個查詢結果的并集,并且自動去掉重復行。不會排序
union all:得到兩個查詢結果的并集,不會去掉重復行。也不會排序
intersect:得到兩個查詢結果的交集,并且按照結果集的第一個列進行排序
minus:得到兩個查詢結果的減集,以第一列進行排序
例子:
下面是兩個表:一個主修課程表,一個選修課程表。
這個是主修課程表:minors
create table minors( 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)
兩個表使用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
兩個表使用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
兩個表使用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
兩個表使用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
集合操作有 并,交,差 3種運算。
union :得到兩個查詢結果的并集,并且自動去掉重復行。不會排序
union all:得到兩個查詢結果的并集,不會去掉重復行。也不會排序
intersect:得到兩個查詢結果的交集,并且按照結果集的第一個列進行排序
minus:得到兩個查詢結果的減集,以第一列進行排序
例子:
下面是兩個表:一個主修課程表,一個選修課程表。
這個是主修課程表:minors
create table minors(
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)
兩個表使用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
兩個表使用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
兩個表使用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
兩個表使用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
Gavin
posted on 2011-08-18 17:34 GavinMiao 閱讀(478) 評論(0) 編輯 收藏 所屬分類: oracle