Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 26.8Mb
PDF (A4) - 26.9Mb
HTML Download (TGZ) - 7.1Mb
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
User comments in this section are, as the name implies, provided by MySQL users. The MySQL documentation team is not responsible for, nor do they endorse, any of the information provided here.
Sign Up Login You must be logged in to post a comment.