Oracle Intersect運算子


在本教學中,您將學習如何使用Oracle INTERSECT運算子來比較兩個查詢,並返回由兩者相交的行。

Oracle INTERSECT運算子介紹

Oracle INTERSECT運算子比較兩個查詢的結果,並返回兩個查詢輸出的不同行。

以下語句顯示了INTERSECT運算子的語法:

SELECT
    column_list_1
FROM
    T1
INTERSECT 
SELECT
    column_list_2
FROM
    T2;

UNION運算子相似,使用INTERSECT運算子時必須遵循以下規則:

  • 兩個查詢中列的數量和順序必須相同。
  • 相應列的資料型別必須處於相同的資料型別組中,例如數位或字元。

Oracle INTERSECT說明圖

假設有兩個查詢返回T1T2表中的結果集。

  • T1結果集包括:123行。
  • T2結果集包括:2,3,4行。

T1T2的相交結果返回是23。因為這些是由兩個查詢輸出的不同值。

下圖說明了T1T2的交集:

上圖顯示了INTERSECT返回兩個圓(或集合)的交集。

Oracle INTERSECT範例

請參閱範例資料庫中的以下contactsemployees表的ER結構圖。

以下語句使用INTERSECT運算子來獲取在contactsemployees表中都存在人員的姓氏(last_name):

SELECT
    last_name
FROM
    contacts
INTERSECT 
SELECT
    last_name
FROM
    employees
ORDER BY
    last_name;

執行上面範例程式碼,得到以下結果 -

請注意,在最後的查詢中放置了ORDER BY子句,以對由INTERSECT運算子返回的結果集進行排序。

在本教學中,您學習了如何使用Oracle INTERSECT運算子來比較兩個查詢,並返回兩個查詢輸出的不同行。