MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
サブクエリーのもっとも一般的な使用の形式は次のとおりです。
non_subquery_operandcomparison_operator(subquery)
ここで、comparison_operator は次の演算子のいずれかです。
= > < >= <= <> != <=>
例:
... WHERE 'a' = (SELECT column1 FROM t1)
MySQL では、次の構造構文も許可されます。
non_subquery_operandLIKE (subquery)
以前は、サブクエリーの唯一の正当な場所は比較の右側であり、この方法にこだわったいくつかの古い DBMS がまだ見つかることもあります。
結合では実行できない一般的な形式のサブクエリー比較の例を次に示します。 これは、column1 値がテーブル t2 内の最大値に等しいテーブル t1 内のすべての行を検索します。
SELECT * FROM t1 WHERE column1 = (SELECT MAX(column2) FROM t2);
次に別の例を示します。これもまた、いずれかのテーブルに対する集約が含まれているため、結合では実行できません。 これは、特定のカラムに 2 回現れる値を含むテーブル t1 内のすべての行を検索します。
SELECT * FROM t1 AS t WHERE 2 = (SELECT COUNT(*) FROM t1 WHERE t1.id = t.id);
スカラーに対するサブクエリーの比較の場合、サブクエリーはスカラーを返す必要があります。 行コンストラクタに対するサブクエリーの比較の場合、サブクエリーは、その行コンストラクタと同じ数の値を含む行を返す行サブクエリーである必要があります。 セクション13.2.11.5「行サブクエリー」を参照してください。