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