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

MySQLでBETWEEN句を使って列の間(範囲)を検索する方法

MySQLで列間を検索するにはBETWEEN句を使う

MySQLでは、BETWEEN句を利用することで、ある値が2つの列の間(範囲内)に存在するかどうかを簡単に調べることができます。この記事では、テーブルの作成からデータの挿入、そして実際に列間を検索するクエリの実行まで、手順を追ってわかりやすく解説します。

1. サンプルテーブルを作成する

まず、検索用のサンプルテーブル「DemoTable」を作成しましょう。

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    Score1 int,
    Score2 int
    );
Query OK, 0 rows affected (0.78 sec)

このテーブルは、自動採番される主キー「Id」と、2つの数値列「Score1」「Score2」で構成されています。

2. データを挿入する

続いて、INSERT文を使ってテーブルにレコードを追加します。

mysql> insert into DemoTable(Score1,Score2) values(45,65);
Query OK, 1 row affected (0.26 sec)
mysql> insert into DemoTable(Score1,Score2) values(450,680);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable(Score1,Score2) values(800,900);
Query OK, 1 row affected (0.17 sec)

3. テーブルの内容を確認する

SELECT文を実行して、登録済みのすべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+----+--------+--------+
| Id | Score1 | Score2 |
+----+--------+--------+
| 1  | 45     | 65     |
| 2  | 450    | 680    |
| 3  | 800    | 900    |
+----+--------+--------+
3 rows in set (0.00 sec)

4. BETWEEN句で列間を検索するクエリ

ここが本題です。以下のクエリを実行すると、「850」という値がScore1とScore2の間に収まっているレコードのみを抽出できます。

mysql> select *from DemoTable where 850 between Score1 and Score2;

出力結果

+----+--------+--------+
| Id | Score1 | Score2 |
+----+--------+--------+
| 3  | 800    | 900    |
+----+--------+--------+
1 row in set (0.00 sec)

クエリのポイント

「850」はScore1(800)以上であり、かつScore2(900)以下であるため、該当したのはId=3のレコードだけでした。

なお、BETWEEN句は境界値を含む(以上・以下の条件になる)点に注意が必要です。また、通常は同じ列の値に対して使われることが多いBETWEENですが、この例のように同一行内の異なる2つの列を比較対象にすることもできるため、スコアや価格帯など「下限列と上限列を持つデータ」の範囲検索に非常に便利です。

  1. MySQLでカンマ区切りの値の中から特定の文字列を検索する方法(REGEXP活用)

    カンマ区切りで保存された値の中から特定の文字列を検索したい場合、MySQLではREGEXP(正規表現)を使うのが効果的です。この記事では、実際にテーブルを作成し、カンマ区切りの値の中から「MySQL」という文字列を正確に抽出する手順を解説します。1. サンプルテーブルの作成まず、検索対象となるテーブルを作成します。mysql> create table DemoTable1902 ( Subjects text ); Query OK, 0 rows affected (0.00 sec)2. テストデータの挿入INSERT文を使って、カンマ区切りの値を持つレコー

  2. MySQLで複数の列(カラム)を検索する方法をわかりやすく解説

    この記事では、MySQLで複数の列(カラム)を同時に検索する方法について解説します。前提条件: ここでは、あらかじめ「DBNAME」という名前のデータベースと、「tableName」という名前のテーブルが作成されているものとします。AND演算子とOR演算子を使い分ける複数の列を検索する際には、AND 演算子と OR 演算子を使用します。どちらを使うかは、検索結果として何を取得したいかによって決まります。AND: すべての条件に一致するレコードのみを返すOR: いずれかの条件に一致するレコードを返すそれでは、具体的な例を見ていきましょう。例1:AND演算子を使用する場合SELECT colNam