サブクエリの最もよく利用される方法はこの形の中にあります。
non_subquery_operand
comparison_operator
(subquery
)
comparison_operator
がこれらの演算子の1つであるところではこうです。
= > < >= <= <>
例:
... 'a' = (SELECT column1 FROM t1)
かつては、サブクエリが正当であるたった1つの場所は比較の右側でしたし、いまだにいくつかの古い DBMS がこれを主張しています。
ここに、接合と共に実行できない共通形サブクエリ比較の例があります。これは、テーブル
t2
の最大値と同等の、テーブル
t1
内の全ての値を検出します。
SELECT column1 FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2);
ここに、テーブルの1つに対する凝集を含む為、接合と共に利用する事ができないもうひとつの例があります。これは、与えられたカラムの中で2回現れる値を含む、テーブル
t1
の中の全ての行を検出します。
SELECT * FROM t1 AS t WHERE 2 = (SELECT COUNT(*) FROM t1 WHERE t1.id = t.id);
これらの演算子の1つを利用して実行された比較には、=
は行サブクエリと共に利用できるという例外がありますが、サブクエリはスカラを返さなければいけません。詳しくは
項12.2.8.5. 「行サブクエリ」
を参照してください。