摘要:在本教程中,您將學習如何使用 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 運算子示例 #
假設我們有兩個表 A 和 B
表 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 運算子的實際示例 #
首先,建立一個名為 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 Hunold 和 Neena Kochhar 同時出現在 candidates 表和 employees 表中。
摘要 #
- 使用
INTERSECT運算子查詢兩個結果集的共同行。 INTERSECT運算子會從最終結果集中移除重複的行。
測驗 #
資料庫 #
- PostgreSQL INTERSECT 運算子
- MySQL INTERSECT 運算子
- MariaDB INTERSECT 運算子
- SQLite INTERSECT 運算子
- Db2 INTERSECT 運算子
- Oracle INTERSECT 運算子
- SQL Server INTERSECT 運算子
本教程是否有幫助?