子查询最常见的一种使用方式如下:
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节,“行子查询”。