1. 程式人生 > >Oracle Union Union All Intersect Minus 4種對查詢結果集操作

Oracle Union Union All Intersect Minus 4種對查詢結果集操作

Oracle Union Union All 對查詢結果集操作

在Oracle中提供了三種類型的集合操作: 並(UNION)、交(INTERSECT)、差(MINUS)

Union:對兩個結果集進行並集操作,不包括重複行,同時進行預設規則的排序;

Union All:對兩個結果集進行並集操作,包括重複行,不進行排序;

Intersect:對兩個結果集進行交集操作,不包括重複行,同時進行預設規則的排序;

Minus:對兩個結果集進行差操作,不包括重複行,同時進行預設規則的排序。

可以在最後一個結果集中指定Order by子句改變排序方式。

--測試表A中的記錄見下
select * from TestA;

--對兩個結果集進行並集操作,不包括重複行
select * from TestA where id<3 union select * from TestA where id<6;

--對兩個結果集進行並集操作,包括重複行行
select * from TestA where id<3 union all select * from TestA where id<6;

--對兩個結果集進行交集操作,不包括重複行
select * from TestA where id<3 intersect select * from TestA where id<6;

--對兩個結果集進行差操作(前面的結果集減去後面的),不包括重複行
select * from TestA where id<6 minus select * from TestA where id<3;

--對三個結果集進行取並集操作(取到的結果是從左到右依次的值不進行排序)在最後進行order by 操作
select * from (select * from TestA where id>5 union all select * from TestA where id<3 union all select * from TestA where id<2) order by id asc;

select * from (select * from TestA where id>5 union all select * from TestA where id<3 union all select * from TestA where id<2) order by id desc;