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

MySQLで特定の範囲の値を抽出する方法:WHERE句を使った条件検索の基本

MySQLのテーブルから特定の範囲の値を抽出したい場合、WHERE句を使用します。本記事では、サンプルテーブルを作成し、年齢の範囲とフラグ条件を組み合わせたデータ抽出の具体的な手順を解説します。

1. サンプルテーブルの作成

まず、顧客情報を格納するためのテーブル「DemoTable」を作成します。顧客IDは自動採番(AUTO_INCREMENT)の主キーとして設定しています。

mysql> create table DemoTable
(
    CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    CustomerName varchar(200),
    CustomerAge int,
    isRegularCustomer bool
);
Query OK, 0 rows affected (0.57 sec)

2. テストデータの挿入

次に、INSERT文を使って複数の顧客レコードを登録します。

mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Chris',24,true);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Robert',26,false);
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Mike',27,false);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Larry',22,true);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Sam',30,true);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(CustomerName,CustomerAge,isRegularCustomer)values('Carol',26,true);
Query OK, 1 row affected (0.16 sec)

3. 登録したレコードの確認

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

mysql> select *from DemoTable;

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

+------------+--------------+-------------+-------------------+
| CustomerId | CustomerName | CustomerAge | isRegularCustomer |
+------------+--------------+-------------+-------------------+
|          1 | Chris        |          24 |                 1 |
|          2 | Robert       |          26 |                 0 |
|          3 | Mike         |          27 |                 0 |
|          4 | Larry        |          22 |                 1 |
|          5 | Sam          |          30 |                 1 |
|          6 | Carol        |          26 |                 1 |
+------------+--------------+-------------+-------------------+
6 rows in set (0.00 sec)

4. WHERE句で特定の範囲の値を抽出する

ここからが本題です。特定の範囲の値を抽出するには、WHERE句に条件を指定します。今回の例では、以下の2つの条件を組み合わせています。

  • 年齢が24以上27以下(CustomerAge >= 24 AND CustomerAge <= 27)
  • 常連顧客であること(isRegularCustomer = true)

複数の条件はAND演算子で連結することで、すべての条件を満たすレコードのみを取得できます。

mysql> select CustomerId,CustomerName,CustomerAge,isRegularCustomer from DemoTable
where isRegularCustomer=true AND CustomerAge >=24 AND CustomerAge <= 27;

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

+------------+--------------+-------------+-------------------+
| CustomerId | CustomerName | CustomerAge | isRegularCustomer |
+------------+--------------+-------------+-------------------+
|          1 | Chris        |          24 |                 1 |
|          6 | Carol        |          26 |                 1 |
+------------+--------------+-------------+-------------------+
2 rows in set (0.00 sec)

補足:BETWEEN句を使った書き方

範囲指定にはBETWEEN句を使うこともできます。上記のクエリは以下のように書き換え可能で、より直感的に範囲を表現できます。

mysql> select CustomerId,CustomerName,CustomerAge,isRegularCustomer from DemoTable
where isRegularCustomer=true AND CustomerAge BETWEEN 24 AND 27;

両者は同じ結果を返しますが、BETWEEN句の方が「24〜27の範囲」という意図が明確になり、可読性が向上します。状況に応じて使い分けるとよいでしょう。

  1. MySQLでテーブルから順序付けられた3行のみを取得する方法

    ORDER BY句とLIMITを組み合わせて順序付きの3行を取得する MySQLでテーブルから特定の順序で並べ替えた行を、指定した件数だけ取得したい場合は、ORDER BY句とLIMITを組み合わせます。ここでは、従業員IDの降順に並べ替えた上位3行を取得する具体例を紹介します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成しましょう。 mysql> create table DemoTable1551    -> (    -> EmployeeId int NOT NULL AUTO_INCREMENT PRIM

  2. MySQLで月を指定してデータを抽出する方法(MONTH()関数の使い方)

    MySQLで日付データから特定の「月」に該当するレコードだけを抽出したい場合は、MONTH()関数を使うのが便利です。この記事では、実際にテーブルを作成し、サンプルデータを挿入しながら、月を条件にしたSELECT文の書き方を具体的に解説します。1. サンプルテーブルの作成まずは、出荷日(Shippingdate)を格納するdatetime型のカラムを持つテーブルを作成します。mysql> create table DemoTable1599    -> (    -> Shippingdate d