Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


13.2.10.2 サブクエリーを使用した比較

サブクエリーのもっとも一般的な使用の形式は次のとおりです。

non_subquery_operand comparison_operator (subquery)

ここで、comparison_operator は次の演算子のいずれかです。

=  >  <  >=  <=  <>  !=  <=>

例:

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

MySQL では、次の構造構文も許可されます。

non_subquery_operand LIKE (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.10.5「行サブクエリー」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.