什麼是單行子查詢和多行子查詢?
單行子查詢
當外部查詢的結果基於單個未知值時,使用單行子查詢。雖然此查詢型別正式稱為“單行”,但名稱暗示查詢返回多個列,但僅返回一行結果。但是,單行子查詢只能返回一行結果,該結果僅包含一列到外部查詢。
在下面的 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)
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP