ここではMySQLでBETWEEN演算子で範囲指定してデータを取得する方法を紹介しています。
BETWEEN:範囲指定してデータを取得する
列の値の範囲を指定してデータを取得するには、BETWEEN演算子を使います。
BETWEEN演算子の基本的な使い方は次の通りです。
指定した値1以上、値2以下の範囲に一致するレコードを取得します。
SELECT 列名 FROM 表名 WHERE 列名 BETWEEN 値1 AND 値2;
次のSQLではCOL2列の値が20以上、40以下のデータのみを取得しています。
mysql> SELECT col1,col2 FROM tab;
+-------+------+
| col1 | col2 |
+-------+------+
| 00001 | 10 |
| 00002 | 20 |
| 00003 | 30 |
| 00004 | 40 |
| 00005 | 50 |
| 00006 | NULL |
+-------+------+
6 rows in set (0.00 sec)
mysql> SELECT col1,col2 FROM tab WHERE col2 BETWEEN 20 AND 40;
+-------+------+
| col1 | col2 |
+-------+------+
| 00002 | 20 |
| 00003 | 30 |
| 00004 | 40 |
+-------+------+
3 rows in set (0.00 sec)
また、NOTを追加することで、範囲指定した値以外のデータを取得することが出来ます。
次のSQLではCOL2列の値が20以上、40以下に一致しないデータを取得しています。
mysql> SELECT col1,col2 FROM tab;
+-------+------+
| col1 | col2 |
+-------+------+
| 00001 | 10 |
| 00002 | 20 |
| 00003 | 30 |
| 00004 | 40 |
| 00005 | 50 |
| 00006 | NULL |
+-------+------+
6 rows in set (0.00 sec)
mysql> SELECT col1,col2 FROM tab WHERE col2 NOT BETWEEN 20 AND 40;
+-------+------+
| col1 | col2 |
+-------+------+
| 00001 | 10 |
| 00005 | 50 |
+-------+------+
2 rows in set (0.00 sec)
BETWEEN:日付を範囲指定して検索する方法
日付型の列の値についても、BETWEEN演算子を使うことで範囲指定して検索することが出来ます。
BETWEEN演算子の基本的な使い方は次の通りです。
指定した列の値が値1以上かつ値2以下の値となるレコードを検索します。
SELECT 列名 FROM 表名 WHERE 列 BETWEEN 値1 AND 値2;
日付型(DATE型)の列と比較する値は次のSQLのように’YYYY-MM-DD’として指定します。
SELECT * FROM tab1 WHERE col2 BETWEEN '2010-10-10' AND '2020-10-11';
または’YYYYMMDD’としてハイフンなしで値を指定します。
SELECT * FROM tab1 WHERE col2 BETWEEN '20101010' AND '20201011';