SQLite3で複数の条件で絞り込んでみる

SQLite3でユーザーIDがある値から別の値までの間のユーザーを絞り込んで検索をしてみます。

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

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


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

今回はユーザーIDが20〜40までの範囲のユーザーに絞り込んでみます。

sqlite> SELECT * FROM users WHERE id <= 20 AND id >= 40;
+----+------+
| id | name |
+----+------+
| 20 | 紗衣   |
| 21 | 明仁   |
| 22 | 光伯   |
| 23 | 藍胡   |
| 24 | 光雄   |
| 25 | 鋼一   |
| 26 | 寿一   |
| 27 | 尚喜   |
| 28 | 縁    |
| 29 | 唯有   |
| 30 | 依奈   |
| 31 | 遼子   |
| 32 | 小桜   |
| 33 | 瑠華   |
| 34 | 勝吾   |
| 35 | 友栄   |
| 36 | 率    |
| 37 | 典男   |
| 38 | 氷魚   |
| 39 | 智貴   |
| 40 | 真美子  |
+----+------+

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

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

のようにANDで繋ぎます。




今回のように任意のカラムに対して、数値の範囲の場合は

sqlite> SELECT * FROM users WHERE id BETWEEN 20 AND 40;
+----+------+
| id | name |
+----+------+
| 20 | 紗衣   |
| 21 | 明仁   |
| 22 | 光伯   |
| 23 | 藍胡   |
| 24 | 光雄   |
| 25 | 鋼一   |
| 26 | 寿一   |
| 27 | 尚喜   |
| 28 | 縁    |
| 29 | 唯有   |
| 30 | 依奈   |
| 31 | 遼子   |
| 32 | 小桜   |
| 33 | 瑠華   |
| 34 | 勝吾   |
| 35 | 友栄   |
| 36 | 率    |
| 37 | 典男   |
| 38 | 氷魚   |
| 39 | 智貴   |
| 40 | 真美子  |
+----+------+

BETWEEN 数値1 AND 数値2の指定方法も有りです。

※ BETWEENは演算子になります。

SQLite BETWEEN Operator By Practical Examples

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

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