SQLite3で複数の値で絞り込んでみる

SQLite3で複数のユーザーIDを一度に指定して検索を絞り込んでみます。

使用するデータはパイソンでgimeiでSQLite3のRDB用のテストデータを用意してみるで作成したものを使います。

※ sample.sqlite3のパスが/path/to/dir/ledger.sqlite3で話を進めます。


# ledger.sqlite3があるディレクトリまで移動
$ cd /path/to/dir
$ sqlite3 ledger.sqlite3

今回はユーザーIDが5、15と25のユーザーに絞り込んでみます。

SQLite3で複数の条件で結果を絞り込んでみるでは複数の条件でWHERE句内でANDという演算子で条件を繋ぎましたが、5か15か25といったどれかの場合はOR演算子を使用して、

sqlite> SELECT * FROM users WHERE id = 10 OR id = 15 OR id = 25;
+----+------+
| id | name |
+----+------+
| 10 | 伊純   |
| 15 | 晴樹   |
| 25 | 鋼一   |
+----+------+

のように繋ぎます。


ただ、この書き方だと条件が増える程構文が冗長化してしまうため、IN演算子を使って下記のように纏めます。

sqlite> SELECT * FROM users WHERE id IN (5, 15, 25);
+----+------+
| id | name |
+----+------+
| 10 | 伊純   |
| 15 | 晴樹   |
| 25 | 鋼一   |
+----+------+

今回のような複数の条件で絞り込みを行う構文は

SELECT * FROM テーブル名 
WHERE 条件1 
OR 条件2;

のようにORで繋ぎます。


IN演算子の方は

SELECT * FROM テーブル名 
WHERE カラム IN (値1、値2....) 

になります。

SQLite IN: Determine a Value Matches Any Value In A List

京都の東本願寺で開催されているプログラミング教室で講師をしています。
詳しくはTera schoolを御覧ください。
マインクラフト用ビジュアルエディタを開発しています。

詳しくはinunosinsi/mcws_blockly - githubをご覧ください。