SQLiteの IN 句について
【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力
【 IN 句】
IN 句→カラムの値が複数の値のいずれかと一致するかどうかという条件式を記述する事が、できます。
書式
SELECT カラム名 , ... FROM テーブル名
WHERE カラム IN(値1, 値2, ...);
また、
NOT 演算子を組み合わせることで指定した値のリストに含まれて居ない場合のデータを取得することもできます。
書式
SELECT カラム名 , ... FROM テーブル名
WHERE カラム NOT IN(値1, 値2, ...);
実行例
sqlite> select * from user;
id name address
---------- ---------- ----------
1 Suzuki Osaka
2 Yamada Tokyo
3 Kudou Chiba
4 Ushijima Nagoya
5 Hanada Saitama
6 Okamoto Sapporo
7 Shima Tokyo
address カラムの値が 'Tokyo' 、'Chiba' 、 'Saitama' に一致するデータを取得。
sqlite> select * from user where address in('Tokyo', 'Chiba', 'Saitama');
id name address
---------- ---------- ----------
2 Yamada Tokyo
3 Kudou Chiba
5 Hanada Saitama
7 Shima Tokyo
sqlite>
【他のテーブルから取得した値のリストと比較】
書式
SELECT カラム名 , ... FROM テーブル名
WHERE カラム IN(SELECT カラム名 FROM テーブル名);
実行
次のようなテーブルを作成
sqlite> create table kantou(id integer, pref text);
sqlite> insert into kantou values(1, 'Tokyo');
sqlite> insert into kantou values(2, 'Chiba');
sqlite> insert into kantou values(3, 'Saitama');
sqlite> insert into kantou values(4, 'Kanagawa');
sqlite>
sqlite>
sqlite> select * from kantou;
id pref
---------- ----------
1 Tokyo
2 Chiba
3 Saitama
4 Kanagawa
sqlite>
それでは user テーブルから値を取得します。条件式として address カラムの値が kantou テーブルの pref カラムの値のいずれかと一致するように設定します
結果
sqlite> select * from user where address in(select pref from kantou);
id name address
---------- ---------- ----------
2 Yamada Tokyo
3 Kudou Chiba
5 Hanada Saitama
7 Shima Tokyo
sqlite>
※コメント投稿者のブログIDはブログ作成者のみに通知されます