top
Loading...
13.2.8.2.使用子查詢進行比較
13.2.8.2. 使用子查詢進行比較

子查詢最常見的一種使用方式如下:

non_subquery_operand comparison_operator (subquery)

comparison_operator是以下 操作符之一時:

=  >  <  >=  <=  <>

例如:

  ... 'a' = (SELECT column1 FROM t1)

有時,子查詢的合法位置只能在比較式的右側,您可以發現,在有些舊的DBMSs中仍保持這一點。

以下是一個常見格式的子查詢比較的例子。您不能使用聯合進行此類比較。表t1中有些值與表t2中的最大值相同。該比較可以查找出所有這類值:

SELECT column1 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);

對于采用這些操作符之一進行的比較,子查詢必須返回一個標量。有一個例外,那就是=可以和行子查詢同時使用。請參見13.2.8.5節,“行子查詢”。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/sql-syntax.html
北斗有巢氏 有巢氏北斗