ORACLE 集合運算
集合運算組合兩個或多個部分查詢的結果到一個結果中。包含集合運算的查詢稱為複合查詢。
Operator Returns
UNION(聯合) 由每個查詢選擇的所有不同的行(無重複值)
UNION ALL 由每個查詢選擇的所有的行,包括所有重複的行
INTERSECT(交叉) 由兩個查詢選擇的所有不同的行
MINUS 由第一個查詢選擇的所有不同的行
所有的集合運算與等號的優先順序相同,如果SQL語句包含多個集合運算並且沒有圓括號明確地指定另一個順序,Oracle伺服器將以從左到右的順序計算。你應該使用圓括號來明確地指定帶另外的集合運算INTERSECT (相交) 運算查詢中的賦值順序。
INTERSECT (相交) 和MINUS (相減) 運算不是ANSI SQL-99相容的,他們是Oracle特定的。
■聯合(UNION)
UNION(聯合)運算
UNION運算返回所有由任一查詢選擇的行。用UNION運算從多表返回所有行,但除去任何重複的行。
・原則
:: 被選擇的列數和列的資料型別必須是與所有用在查詢中的SELECT語句一致。列的名字不必相同。
:: 聯合運算在所有被選擇的列上進行。
:: 在做重複檢查的時候不忽略空(NULL)值。
:: IN運算有比UNION運算高的優先順序。
:: 在預設情況下,輸出以SELECT子句的第一列的升序排序。
■全聯合(UNION ALL)
運算從兩個查詢返回包括所有重複值的結果
原則
:: 和聯合不同,重複的行不被過濾,並且預設情況下輸出不排序。
:: 不能使用DISTINCT關鍵字。
注:除了上面的兩點,UNION ALL的原則與UNION相同。
■相交(INTERSECT)
用相交運算返回多個查詢中所有的公共行。
原則
:: 在查詢中被 SELECT 語句選擇的列數和資料型別必須與在查詢中所使用的所有的 SELTCT 語句中的 一樣,但列的名字不必一樣。
:: 顛倒相交的表的排序不改變結果。
:: 相交不忽略空值。
■相減(MINUS)
用相減運算返回由第一個查詢返回的行,那些行不出現在第二個查詢中 (第一個SELECT語句減第二個SELECT語句)。
原則
:: 在查詢中被SELECT語句選擇的列數和資料型別必須與在查詢中所使用的所有的SELTCT語句中的一樣,但列的名字不必一樣。
:: 對於MINUS運算,在WHERE子句中所有的列都必須在SELECT子句中。
■
※集合運算的原則
:: 在兩個SELECT列表中的表示式必須在數目上和資料型別上相匹配
:: 可以用圓括號改變執行的順序
:: ORDER BY子句:
–只能出現在語句的最後
–從第一個SELECT語句接收列名、別名,或者位置記號
:: 集合運算可以用在子查詢中。
■Oracle 伺服器和集合運算
:: 除了UNION ALL,重複行自動被清除
:: 在結果中的列名是第一個查詢中出現的列名
:: 除了UNION ALL(無排序),預設情況下按升序順序輸出
在一個複合查詢的各查詢組成部分的選擇列表中相應的表示式必須在數目和型別上匹配。如果查詢的組成部分選擇字元資料,返回值的資料型別被如下決定:
:: 如果查詢選擇的資料型別的值為CHAR,那麼,返回值的資料型別也為CHAR。
:: 如果查詢選擇的兩者之一或兩者的資料型別值為VARCHAR2,那麼,返回值的資料型別也是VARCHAR2。
你可能需要提及,輸出以第一個SELECT子句的第一列的升序被排序,然後是第二列,等等。
■匹配SELECT語句 //湊數
eg:
SELECT department_id, TO_NUMBER(null) location, hire_date
FROM employees
UNION
SELECT department_id, location_id, TO_DATE(null)
FROM departments;
DEPARTMENT_ID LOCATION HIRE_DATE
------------- ---------- ----------
80 21-4月 -00
90 1700
90 17-6月 -87
90 21-9月 -89
90 13-1月 -93
100 1700
100 16-8月 -94
100 17-8月 -94
100 28-9月 -97
100 30-9月 -97
100 07-3月 -98
匹配SELECT語句
由於在兩個查詢的SELECT列表中的表示式必須在數量上匹配,你可以使用虛擬列和轉換函式資料型別來滿足該規則。在幻燈片中使用了虛擬列,在第一個查詢中的TO_NUMBER函式被用以匹配第二個查詢中返回的LOCATION_ID列的數字資料型別,同樣地,第二個查詢中的TO_DATE函式被用於匹配 第一個查詢返回的日期資料型別。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/658202/viewspace-1029320/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle_Day2集合運算Oracle
- 集合-運算實現
- 詳解 SQL 集合運算SQL
- 基於python的集合運算Python
- MySQL第四天——集合運算MySql
- MySQL小白入門04 - 集合運算MySql
- Oracle OCP(09):使用集合運算子Oracle
- awk+uniq實現集合減法運算
- SQL Server中的集合運算: UNION, EXCEPT和INTERSECTSQLServer
- 【POWER】Oracle的冪運算Oracle
- Oracle OCP(10):運算元據Oracle
- 【開發篇sql】 條件和表示式(五) 集合運算SQL
- java中與運算,或運算,異或運算,取反運算Java
- foreach 實現 MyBatis 遍歷集合與批量運算元據MyBatis
- oracle 之 控制oracle RAC 進行並行運算Oracle並行
- Oracle 集合Oracle
- 【隱私計算筆談】MPC系列專題(十):安全多方計算下的集合運算
- opencv 開運算、閉運算OpenCV
- 使用運算元控制公式運算公式
- Oracle 集合操作Oracle
- Oracle delete誤運算元據恢復(BBED)Oracledelete
- 使用位運算進行加法運算
- spark-運算元-分割槽運算元Spark
- 二進位制、位運算、位移運算
- (位運算)兩個字串的位運算字串
- ORACLE集合常用方法Oracle
- 位運算
- 運算器
- 1+x雲端計算平臺運維開發初級實操題集合運維
- Numpy 加法運算,opencv 加法運算,影像的融合OpenCV
- 運算整數C/C++位運算技巧C++
- [Python影象處理] 九.形態學之影象開運算、閉運算、梯度運算Python梯度
- oracle 許可權集合Oracle
- 四則運算計算器
- [shell基礎]——算術運算
- 理解位運算
- JavaScript 冪運算JavaScript
- SQL位運算SQL