サブクエリーのもっともよく利用される方法はこの形の中にあります。
non_subquery_operand
comparison_operator
(subquery
)
comparison_operator
がこれらの演算子の 1
つであるところではこうです。
= > < >= <= <> != <=>
例 :
... 'a' = (SELECT column1 FROM t1)
かつては、サブクエリーが正当であるたった 1 つの場所は比較の右側でしたし、いまだにいくつかの古い DBMS がこれを主張しています。
ここに、結合と共に実行できない共通形サブクエリー比較の例があります。ここでは、column1
値がテーブル t2
内の最大値と等しい、テーブル
t1
内のすべての行を検索します。
SELECT * 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);
サブクエリーとスカラーとの比較のために、サブクエリーはスカラーを返す必要があります。サブクエリーと行コンストラクタとの比較のために、サブクエリーは、行コンストラクタと同じ値の数を含む行を返す行サブクエリーである必要があります。 項8.2.9.5. 「行サブクエリー」 を参照してください。