PLSQL_基礎系列03_合並操作UNION / UNION ALL / MINUS / INTERSET(案例)


2014-11-30 Created By 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM