MySQL 9.0 版本注意事項
子查詢最常見的用法形式如下
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 節「資料列子查詢」。