文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  使用子查詢進行比較

15.2.15.2 使用子查詢進行比較

子查詢最常見的用法是以下形式

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 節,「列子查詢」