SELECT...IN句をサブクエリーにするサンプル †まずはIN句について調べている方は、以下のリンク記事が参考になりますので読んでみてください。 IN句にたくさんの値を記述するのも大変な場合、SELECTにより取得した値群をIN句として使用することができます。
以下にIN句内にSELECTを使用したサンプルを記します。 関連記事 †動作確認環境 †
使用したサンプルテーブル †以下のSQLによりテーブルを作成しデータをINSERTしました。 CREATE TABLE t1 ( id INT PRIMARY KEY ,country VARCHAR(20) ,capital VARCHAR(20) ); INSERT INTO t1 VALUES (1,'Japan','Tokyo'); INSERT INTO t1 VALUES (2,'China','Beijing'); INSERT INTO t1 VALUES (3,'Australia','Canberra'); INSERT INTO t1 VALUES (4,'Thailand','Bangkok'); INSERT INTO t1 VALUES (5,'Indonesia','Jakarta'); CREATE TABLE t2 ( id INT ,group_id INT ); INSERT INTO t2 VALUES (1, 1); INSERT INTO t2 VALUES (2, 2); INSERT INTO t2 VALUES (3, 1); INSERT INTO t2 VALUES (4, 2); INSERT INTO t2 VALUES (5, 1); テーブル構成は以下の通りです。
IN句内にSELECTを使って絞り込む †IN句にSELECTを書くことができます。 mysql> select * from t1 where id in (select id from t2 where group_id = 2); +----+----------+---------+ | id | country | capital | +----+----------+---------+ | 2 | China | Beijing | | 4 | Thailand | Bangkok | +----+----------+---------+ mysql> select * from t1 where id in (select id from t2 where group_id = 1); +----+-----------+----------+ | id | country | capital | +----+-----------+----------+ | 1 | Japan | Tokyo | | 3 | Australia | Canberra | | 5 | Indonesia | Jakarta | +----+-----------+----------+ 以上、IN句内にSELECTを使用するサンプルSQL構文でした。 |