SQL 相關子查詢

摘要:在本教程中,您將學習如何使用 SQL 相關子查詢來執行逐行比較和複雜篩選。

SQL 相關子查詢簡介 #

相關子查詢是一種子查詢,其輸入值依賴於外部查詢。

常規查詢執行一次,並將結果提供給外部查詢。然而,相關子查詢會重複執行——外部查詢處理的每一行都會執行一次。

相關子查詢有兩個主要特點:

  • 引用外部查詢中的列。
  • 對外部查詢的每一行執行一次。

通常,您會在 WHERESELECTHAVING 子句中使用相關子查詢。

SQL 相關子查詢示例 #

我們將使用 HR 示例資料庫中的 employees 表。

SQL Correlated Subquery - employees table

以下示例使用相關子查詢來查詢薪資高於其所在部門平均薪資的員工。

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)。

對於外部查詢中選擇的每個員工,子查詢都會執行一次。

摘要 #

  • 相關子查詢是使用外部查詢中的值的查詢。
  • 對於外部查詢的每一行,相關子查詢都會執行一次。

測驗 #

資料庫 #

本教程是否有幫助?
© .