MySQLで範囲内の値を検索する方法|BETWEEN演算子の使い方を解説
MySQLで特定の値が指定した範囲(開始値〜終了値)に含まれているかどうかを調べるには、BETWEEN演算子を使用します。この記事では、サンプルテーブルの作成から実際の検索クエリの実行まで、手順を追ってわかりやすく解説します。
1. サンプルテーブルの作成
まず、範囲の開始値(Start)と終了値(End)を格納するテーブルを作成しましょう。
mysql> create table DemoTable
-> (
-> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> Start int,
-> End int
-> );
Query OK, 0 rows affected (0.91 sec)
このテーブルでは、Id列が自動採番の主キーとして設定され、Start列とEnd列にそれぞれ範囲の下限と上限を保存できるようになっています。
2. テストデータの挿入
次に、INSERT文を使ってテーブルにレコードを追加します。
mysql> insert into DemoTable(Start,End) values(100,200); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable(Start,End) values(400,500); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTable(Start,End) values(210,350); Query OK, 1 row affected (0.11 sec)
ここでは「100〜200」「400〜500」「210〜350」という3つの異なる範囲を持つレコードを挿入しました。
3. 挿入したレコードの確認
SELECT文でテーブルの全レコードを表示して、データが正しく登録されているか確認します。
mysql> select *from DemoTable;
実行すると、以下のような結果が出力されます。
+----+-------+------+ | Id | Start | End | +----+-------+------+ | 1 | 100 | 200 | | 2 | 400 | 500 | | 3 | 210 | 350 | +----+-------+------+ 3 rows in set (0.00 sec)
4. BETWEEN演算子で範囲内の値を検索する
それでは本題です。たとえば「432」という値がどの範囲に含まれるのかを調べたい場合は、WHERE句の中でBETWEEN演算子を使い、次のように記述します。
mysql> select *from DemoTable WHERE 432 BETWEEN Start AND End;
実行結果は以下のとおりです。
+----+-------+------+ | Id | Start | End | +----+-------+------+ | 2 | 400 | 500 | +----+-------+------+ 1 row in set (0.04 sec)
432は400以上500以下であるため、「400〜500」の範囲を持つId=2のレコードだけが抽出されました。このように、BETWEEN 開始値 AND 終了値という形式で条件を指定すると、両端の値を含む範囲内にあるレコードのみを取得できます。
まとめ
MySQLで数値が特定の範囲に含まれるかどうかを判定したい場合は、BETWEEN演算子が最もシンプルで効率的な方法です。価格帯や年齢層、期間などの絞り込み処理でも頻繁に使われる構文なので、ぜひ覚えておきましょう。
-
2つのMySQLテーブル間で欠落している値を見つける方法【NOT IN句の使い方】
はじめに2つのMySQLテーブルを比較して、片方のテーブルには存在しない値(欠落している値)を抽出したい場面はよくあります。そんなときに便利なのが NOT IN 句です。この記事では、具体的なサンプルコードとともに、2つのテーブル間で欠落している値を見つける方法をわかりやすく解説します。手順1:1つ目のテーブルを作成するまず、比較元となるテーブルを作成しましょう。mysql> create table DemoTable1(Value int);Query OK, 0 rows affected (0.56 sec)次に、INSERT文を使ってレコードを挿入します。mysql> i
-
MySQLで複数のカラムにNULL値を含むレコードを検索する方法
はじめにMySQLで複数のカラムの中にNULL値が1つでも含まれているレコードを抽出したい場合、GREATEST()関数を活用するのが効果的です。GREATEST()は引数の中から最大値を返す関数ですが、引数のいずれかにNULLが含まれている場合、結果もNULLを返すという特性があります。この特性を利用すれば、複数カラムにわたるNULL値のチェックをシンプルな条件式で実現できます。この記事では、実際にテーブルを作成し、サンプルデータを挿入して、NULL値を含むレコードを検索する手順を順番に解説します。テーブルの作成まず、4つのINT型カラムを持つテーブルを作成しましょう。mysql> c