ここまでの内容は、スカラ副問い合わせ -- つまり、単一のカラム値を返す -- サブクエリについてのものでした。行副問い合わせとは、単一のレコード値を返す異型サブクエリです。したがって、複数のカラム値を返すことがあります。 次に例を 2 つ示します。
SELECT * FROM t1 WHERE (1,2) = (SELECT column1, column2 FROM t2); SELECT * FROM t1 WHERE ROW(1,2) = (SELECT column1, column2 FROM t2);
column1 = 1
で、column2 =
2
であるレコードがテーブル
t2
に含まれている場合、これらのクエリはどちらも
TRUE
になります。
式 (1,2)
はコンストラクタと呼ばれることもあり、他のコンテキストでも正式に使用できます。次に、例を示します。
SELECT * FROM t1 WHERE (column1,column2) = (1,1);
上のステートメントは次のものと同じです。
SELECT * FROM t1 WHERE column1 = 1 AND column2 = 1;
しかし、通常、コンストラクタは、複数のカラムを返すサブクエリを使った比較で使用されます。たとえば、次のクエリは、``テーブル t2 に重複するレコードを持つすべてのレコードを t1 で検索する'' という要求に対応します。
SELECT column1,column2,column3 FROM t1 WHERE (column1,column2,column3) IN (SELECT column1,column2,column3 FROM t2);
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.