PLSQL_基礎系列3_合並操作UNION / UNION ALL / MINUS / INTERSET,plsqlinterset
2014-11-30 BaoXinjian
一、摘要
如果我們需要將兩個select語句的結果作為一個整體顯示出來,我們就需要用到Union或者Union All關鍵字。Union(或稱為聯合)的作用是將多個結果合並在一起顯示出來。
Union和Union All的區別是,Union會自動壓縮多個結果集合中的重復結果,而Union All則將所有的結果全部顯示出來,不管是不是重復。
- Union:對兩個結果集進行並集操作,不包括重復行,同時進行默認規則的排序;
- Union All:對兩個結果集進行並集操作,包括重復行,不進行排序;
- Intersect:對兩個結果集進行交集操作,不包括重復行,同時進行默認規則的排序;
- Minus:對兩個結果集進行差操作,不包括重復行,同時進行默認規則的排序;
可以在最後一個結果集中指定Order by子句改變排序方式。
二、UNION
UNION(聯合)運算
UNION運算返回所有由任一查詢選擇的行。用UNION運算從多表返回所有行,但除去任何重復的行。
原則
- 被選擇的列數和列的數據類型必須是與所有用在查詢中的SELECT語句一致。列的名字不必相同。
- 聯合運算在所有被選擇的列上進行。
- 在做重復檢查的時候不忽略空(NULL)值。
- IN運算有比UNION運算高的優先級。
- 在默認情況下,輸出以SELECT子句的第一列的升序排序。
三、UNION ALL
運算從兩個查詢返回包括所有重復值的結果
原則
- 和聯合不同,重復的行不被過濾,並且默認情況下輸出不排序。
- 不能使用DISTINCT關鍵字。
注:除了上面的兩點,UNION ALL的原則與UNION相同。
四、MINUS
相交(INTERSECT)
用相交運算返回多個查詢中所有的公共行。
原則
- 在查詢中被 SELECT 語句選擇的列數和數據類型必須與在查詢中所使用的所有的 SELTCT 語句中的 一樣,但列的名字不必一樣。
- 顛倒相交的表的排序不改變結果。
- 相交不忽略空值。
五、INTERSET
相減(MINUS)
用相減運算返回由第一個查詢返回的行,那些行不出現在第二個查詢中 (第一個SELECT語句減第二個SELECT語句)。
原則
- 在查詢中被SELECT語句選擇的列數和數據類型必須與在查詢中所使用的所有的SELTCT語句中的一樣,但列的名字不必一樣。
- 對於MINUS運算,在WHERE子句中所有的列都必須在SELECT子句中。
Thanks and Regards