摘要:在本教程中,您將學習如何使用 SQL 相關子查詢來執行逐行比較和複雜篩選。
SQL 相關子查詢簡介 #
相關子查詢是一種子查詢,其輸入值依賴於外部查詢。
常規查詢執行一次,並將結果提供給外部查詢。然而,相關子查詢會重複執行——外部查詢處理的每一行都會執行一次。
相關子查詢有兩個主要特點:
- 引用外部查詢中的列。
- 對外部查詢的每一行執行一次。
通常,您會在 WHERE、SELECT 或 HAVING 子句中使用相關子查詢。
SQL 相關子查詢示例 #
我們將使用 HR 示例資料庫中的 employees 表。

以下示例使用相關子查詢來查詢薪資高於其所在部門平均薪資的員工。
SELECT
first_name,
department_id,
salary
FROM
employees e1
WHERE
salary > (
SELECT
AVG(salary) average_salary
FROM
employees e2
WHERE
e2.department_id = e1.department_id
)
ORDER BY
department_id;Code language: SQL (Structured Query Language) (sql)輸出
first_name | department_id | salary
------------+---------------+----------
Michael | 2 | 13000.00
Den | 3 | 11000.00
Shanta | 5 | 6500.00
Matthew | 5 | 8000.00
Adam | 5 | 8200.00
Payam | 5 | 7900.00
Bruce | 6 | 6000.00
Alexander | 6 | 9000.00
John | 8 | 14000.00
Karen | 8 | 13500.00
Steven | 9 | 24000.00
Daniel | 10 | 9000.00
Nancy | 10 | 12000.00
Shelley | 11 | 12000.00Code language: SQL (Structured Query Language) (sql)查詢工作原理:
外部查詢選擇薪資高於該員工所在部門所有員工平均薪資的員工 (e1)。
子查詢計算當前員工所在部門的平均薪資 (e2.department_id = e1.department_id)。
對於外部查詢中選擇的每個員工,子查詢都會執行一次。
摘要 #
- 相關子查詢是使用外部查詢中的值的查詢。
- 對於外部查詢的每一行,相關子查詢都會執行一次。
測驗 #
資料庫 #
本教程是否有幫助?