MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL】BETWEEN演算子で複数の入力値を1つのクエリで表示する方法

BETWEEN演算子による範囲指定の基本

複数の入力値(IDの範囲など)に該当するレコードを1つのMySQLクエリだけで取得したい場合は、BETWEENキーワードを使用します。BETWEENは「〜から〜まで」という範囲条件を指定できる演算子で、両端の値を含めて検索するのが特徴です。

それでは、実際にサンプルテーブルを作成しながら動作を確認していきましょう。

1. テーブルの作成

まず、学生情報を格納するテーブルを作成します。

mysql> create table DemoTable1537
-> (
-> StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentName varchar(20)
-> );
Query OK, 0 rows affected (0.72 sec)

2. レコードの挿入

続いて、INSERTコマンドを使ってテーブルにデータを登録します。

mysql> insert into DemoTable1537(StudentName) values('Chris');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1537(StudentName) values('Bob');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1537(StudentName) values('Sam');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1537(StudentName) values('Mike');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1537(StudentName) values('David');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1537(StudentName) values('John');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1537(StudentName) values('Carol');
Query OK, 1 row affected (0.12 sec)

3. 登録データの確認

SELECT文ですべてのレコードを表示して、正しく登録されているか確認しましょう。

mysql> select * from DemoTable1537;

実行結果は以下の通りです。

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 1 | Chris |
| 2 | Bob |
| 3 | Sam |
| 4 | Mike |
| 5 | David |
| 6 | John |
| 7 | Carol |
+-----------+-------------+
7 rows in set (0.00 sec)

4. BETWEENを使って複数の値を1つのクエリで取得

ここで、StudentIdが3から6までの範囲に該当する学生名だけを抽出したいとします。このような場合、OR条件を何度も書く必要はなく、BETWEENを使った次の1文だけで実現できます。

mysql> select StudentName from DemoTable1537 where StudentId between 3 and 6;

実行結果:

+-------------+
| StudentName |
+-------------+
| Sam |
| Mike |
| David |
| John |
+-------------+
4 rows in set (0.00 sec)

まとめ

BETWEEN演算子を活用すれば、指定した範囲内の複数の値を含むレコードを、シンプルな1つのクエリで効率的に取得できます。なお、BETWEENは両端の値(この例では3と6)も検索対象に含む点に注意してください。数値以外にも日付や文字列に対しても使用できるため、範囲検索が必要な場面で非常に便利な構文です。

  1. 【MySQL】SUM()関数を使って単一クエリで特定の列値ごとの複数カウントを取得する方法

    特定の列値に基づくカウントを1つのMySQLクエリで複数取得するには、集計関数SUM()を活用します。MySQLでは「列 = 値」という条件式が真なら1、偽なら0を返すため、その結果をSUM()で合計することで、条件に一致する行数を数えられます。まずはサンプル用のテーブルを作成しましょう。 mysql> create table DemoTable1790 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Name varchar(20), Score int ); Query OK, 0 rows af

  2. MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法

    はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実