#navi(../) * SELECT...IN句をサブクエリーにするサンプル [#le4c2506] まずはIN句について調べている方は、以下のリンク記事が参考になりますので読んでみてください。~ -[[SELECT...IN句のサンプル>SQL/SELECT...IN句のサンプル]] IN句にたくさんの値を記述するのも大変な場合、SELECTにより取得した値群をIN句として使用することができます。 以下にIN句内にSELECTを使用したサンプルを記します。~ 尚、動作確認環境に記したPostgreSQL, MySQL, SQLite3で動作確認を行いました。 #contents #htmlinsertpcsp(db-top.html,db-sp.html) * 関連記事 [#ca47d516] -[[SELECT...IN句のサンプル>SQL/SELECT...IN句のサンプル]] -[[SELECT...IN句をサブクエリーにするサンプル>SQL/IN句をサブクエリーにするサンプル]] * 動作確認環境 [#m0154125] -OS $ lsb_release -d Description: Ubuntu 12.04.4 LTS -PostgreSQL postgres=# select version(); version ------------------------------------------------------------------------------------------------------ PostgreSQL 9.1.12 on i686-pc-linux-gnu, compiled by gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3, 32-bit -MySQL mysql> select version(); +-------------------------+ | version() | +-------------------------+ | 5.5.35-0ubuntu0.12.04.2 | +-------------------------+ 1 row in set (0.00 sec)-SQLite3~ -SQLite3 $ sqlite3 --version 3.7.9 2011-11-01 00:52:41 c7c6050ef060877ebe77b41d959e9df13f8c9b5e * 使用したサンプルテーブル [#qc4df022] 以下のSQLによりテーブルを作成しデータをINSERTしました。~ &ref(sql1.sql); 改行コードLF CREATE TABLE t1 ( id INT PRIMARY KEY ,country VARCHAR(20) ,capital VARCHAR(20) ); INSERT INTO t1 VALUES (1,'Japan','Beijing'); INSERT INTO t1 VALUES (2,'China','Canberra'); INSERT INTO t1 VALUES (3,'Australia','Bangkok'); 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); テーブル構成は以下の通りです。 -t1 |''no primary''|''country''|''capital''| |1|Japan|Tokyo| |2|China|Beijing| |3|Australia|Canberra| |4|Thailand|Bangkok| |5|Indonesia|Jakarta| -t2 |''id''|''group_id''| |1|1| |2|2| |3|1| |4|2| |5|1| * IN句内にSELECTを使って絞り込む [#h25015f8] IN句にSELECTを書くことができます。~ 以下に上記テーブル(t1,t2)を使用した場合の実行例を記します。 mysql> select * from t1 where id in (select id from t2 where group_id = 2); +----+----------+----------+ | id | country | capital | +----+----------+----------+ | 2 | China | Canberra | | 4 | Thailand | Bangkok | +----+----------+----------+ mysql> select * from t1 where id in (select id from t2 where group_id = 1); +----+-----------+---------+ | id | country | capital | +----+-----------+---------+ | 1 | Japan | Beijing | | 3 | Australia | Bangkok | | 5 | Indonesia | Jakarta | +----+-----------+---------+ 以上、IN句内にSELECTを使用するサンプルSQL構文でした。 #htmlinsertpcsp(db-btm.html,db-sp.html)