文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  使用子查詢的比較

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