SQL INTERSECT

摘要:在本教程中,您將學習如何使用 SQL INTERSECT 運算子來查詢兩個查詢之間的共同行。

SQL INTERSECT 運算子簡介 #

INTERSECT 運算子查詢兩個 SELECT 語句結果集的共同行。

以下是 INTERSECT 運算子的語法:

SELECT
  column1,
  column2
FROM
  table1
INTERSECT
SELECT
  column1,
  column2
FROM
  table2;Code language: SQL (Structured Query Language) (sql)

在此語法中,您將 INTERSECT 運算子放置在兩個查詢之間。INTERSECT 運算子僅返回同時出現在兩個結果集中的行。

INTERSECT 運算子遵循以下規則:

  • 列數相同:兩個 SELECT 語句必須具有相同數量的列。
  • 資料型別相容SELECT 語句中對應的列必須具有相容的資料型別。
  • 列名:第二個查詢的列名將決定最終結果集的列名。
  • 行排序:要對最終結果集中的行進行排序,您需要在第二個查詢中使用 ORDER BY 子句。
  • 查詢執行INTERSECT 語句會獨立執行每個 SELECT 語句,然後找出共同的行。

UNION 運算子類似,INTERSECT 運算子會從最終結果集中移除重複的行。

SQL INTERSECT 運算子示例 #

假設我們有兩個表 AB

表 A

id
1
2
3

表 B

id
2
3
4

以下語句使用 INTERSECT 運算子來查詢從表 A 和表 B 檢索資料的查詢的共同行:

SELECT
  id
FROM
  a
INTERSECT
SELECT
  id
FROM
  b
ORDER BY
  id;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

 id
----
  2
  3Code language: SQL (Structured Query Language) (sql)

下圖說明了本例中 INTERSECT 運算子的工作原理:

SQL INTERSECT Operator

紫色部分是綠色和藍色結果集的交集。

SQL INTERSECT 運算子的實際示例 #

首先,建立一個名為 candidates 的新表來儲存候選人資料:

CREATE TABLE candidates (
  candidate_id INT PRIMARY KEY,
  first_name VARCHAR(255) NOT NULL,
  last_name VARCHAR(255) NOT NULL
);Code language: SQL (Structured Query Language) (sql)

其次,向 candidates 表中插入三行資料

INSERT INTO
  candidates (candidate_id, first_name, last_name)
VALUES
  (1, 'Neena', 'Kochhar'),
  (2, 'Alexander', 'Hunold'),
  (3, 'Peter', 'Thiel');Code language: SQL (Structured Query Language) (sql)

第三,使用 INTERSECT 運算子比較 candidates 表和 employees 表中的行:

SELECT
  first_name,
  last_name
FROM
  candidates
INTERSECT
SELECT
  first_name,
  last_name
FROM
  employees
ORDER BY
  first_name,
  last_name;Code language: SQL (Structured Query Language) (sql)

試一試

輸出

 first_name | last_name
------------+-----------
 Alexander  | Hunold
 Neena      | KochharCode language: SQL (Structured Query Language) (sql)

輸出結果表明,Alexander HunoldNeena Kochhar 同時出現在 candidates 表和 employees 表中。

摘要 #

  • 使用 INTERSECT 運算子查詢兩個結果集的共同行。
  • INTERSECT 運算子會從最終結果集中移除重複的行。

測驗 #

資料庫 #

本教程是否有幫助?
© .