MySQL 8.4 發行說明
子查詢最常見的用法是以下形式
non_subquery_operand comparison_operator (subquery)
其中 comparison_operator
是以下其中一個運算子
= > < >= <= <> != <=>
例如
... WHERE 'a' = (SELECT column1 FROM t1)
MySQL 也允許此建構
non_subquery_operand LIKE (subquery)
在過去,子查詢唯一合法的放置位置是在比較的右側,您可能仍然會發現一些舊的 DBMS 堅持這樣做。
這是一個常見形式的子查詢比較的範例,您無法使用聯結來完成。它會找出資料表 t1
中所有 column1
值等於資料表 t2
中最大值的所有列
SELECT * FROM t1
WHERE column1 = (SELECT MAX(column2) FROM t2);
這是另一個範例,同樣無法使用聯結,因為它涉及其中一個資料表的聚合。它會找出資料表 t1
中所有在給定欄位中出現兩次的值的列
SELECT * FROM t1 AS t
WHERE 2 = (SELECT COUNT(*) FROM t1 WHERE t1.id = t.id);
若要將子查詢與純量進行比較,則子查詢必須傳回純量。若要將子查詢與列建構函式進行比較,則子查詢必須是列子查詢,其傳回的列的值數量與列建構函式相同。請參閱第 15.2.15.5 節,「列子查詢」。