什麼是單行子查詢和多行子查詢?


單行子查詢

當外部查詢的結果基於單個未知值時,使用單行子查詢。雖然此查詢型別正式稱為“單行”,但名稱暗示查詢返回多個列,但僅返回一行結果。但是,單行子查詢只能返回一行結果,該結果僅包含一列到外部查詢。

在下面的 SELECT 查詢中,內部 MySQL 僅返回一行,即公司的最低工資。然後,它使用此值來比較所有員工的工資,並僅顯示工資等於最低工資的員工。

SELECT first_name, salary, department_id
FROM employees
WHERE salary = (SELECT MIN (salary)
FROM employees);

當需要根據某些條件限制查詢的組結果時,使用 HAVING 子句。如果子查詢的結果必須與組函式進行比較,則必須將內部查詢巢狀在外部查詢的 HAVING 子句中。

SELECT department_id, MIN (salary)
FROM employees
GROUP BY department_id
HAVING MIN (salary) < (SELECT AVG (salary)
FROM employees)

多行子查詢

多行子查詢是巢狀查詢,可以返回多行結果到父查詢。多行子查詢最常用於 WHERE 和 HAVING 子句中。由於它返回多行,因此必須由集合比較運算子(IN、ALL、ANY)處理。雖然 IN 運算子與前面章節中討論的含義相同,但 ANY 運算子將指定值與子查詢返回的每個值進行比較,而 ALL 將值與子查詢返回的每個值進行比較。以下查詢將顯示錯誤,因為單行子查詢返回多行。

SELECT first_name, department_id FROM employees WHERE department_id = (SELECT department_id FROM employees WHERE LOCATION_ID = 100)

更新於: 2020年6月22日

13K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.