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

MySQLのWHERE句でIN()を使って特定のIDのレコードだけを表示する方法(ループのように同様の結果を取得)

MySQLのIN()演算子で複数のIDに一致するレコードを取得する

MySQLのIN()演算子を使うと、ループ処理のように複数の条件に一致するレコードを1つのクエリで簡単に取得できます。ここでは、WHERE句とIN()を組み合わせて、指定したIDのレコードのみを表示する方法を具体的な例とともに解説します。

1. テーブルを作成する

まず、サンプル用のテーブルを作成しましょう。

mysql> create table DemoTable
(
    ClientId int,
    ClientName varchar(100),
    ClientAge int
);
Query OK, 0 rows affected (0.70 sec)

2. レコードを挿入する

INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable values(100,'Chris',34);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(101,'Robert',31);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(103,'David',33);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable values(104,'Mike',45);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(105,'Sam',39);
Query OK, 1 row affected (0.09 sec)

3. すべてのレコードを確認する

SELECT文を実行して、テーブル内の全レコードを表示します。

mysql> select *from DemoTable;

このクエリを実行すると、以下の出力が得られます。

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
|       100 | Chris      |       34 |
|       101 | Robert     |       31 |
|       103 | David      |       33 |
|       104 | Mike       |       45 |
|       105 | Sam        |       39 |
+----------+------------+-----------+
5 rows in set (0.00 sec)

4. WHERE句とIN()で特定のIDのレコードのみを抽出する

ループのように同様の結果を得るには、WHERE句でIN()を使用します。次のクエリでは、ClientIdが「101」「103」「105」のいずれかに一致するレコードだけを抽出しています。

mysql> select ClientId,ClientName,ClientAge from DemoTable
where ClientId IN(101,103,105);

実行すると、以下の出力が得られます。

+----------+------------+-----------+
| ClientId | ClientName | ClientAge |
+----------+------------+-----------+
|       101 | Robert     |        31 |
|       103 | David      |        33 |
|       105 | Sam        |        39 |
+----------+------------+-----------+
3 rows in set (0.00 sec)

まとめ

このように、IN()演算子を使えば、複数のOR条件(例:ClientId = 101 OR ClientId = 103 OR ClientId = 105)を書く必要がなく、コードがすっきりして読みやすくなります。また、抽出したい値をカンマ区切りで列挙するだけでよいため、条件が増えても柔軟に対応でき、アプリケーション側でループを回して個別にクエリを実行するよりも効率的です。大量のレコードを扱う場合も、1回のクエリでまとめて取得できるため、パフォーマンス面でも有利になります。

  1. MySQLのWHERE句でSUM()関数の結果は使用できる?HAVING句を使った正しい書き方を解説

    MySQLでは、SUM()などの集計関数の結果をWHERE句で直接使用することはできません。これは、WHERE句がグループ化の前に行単位で評価されるためです。代わりに、GROUP BYと組み合わせたHAVING句を使うことで、集計結果に基づいた絞り込みが可能になります。 ここからは、実際にサンプルテーブルを作成しながら手順を確認していきましょう。 1. サンプルテーブルの作成 まず、名前と価格を持つテーブルを作成します。 mysql> create table DemoTable ( Name varchar(50), Price int ); Query OK, 0

  2. MySQLで単一のWHERE句を使って複数行を一括更新する方法(IN句の使い方)

    MySQLでは、IN()句を活用することで、単一のWHERE句を使って複数の行を一度に更新できます。条件の異なる行ごとに個別のUPDATE文を実行する必要がなく、効率的なデータ操作が可能になります。ここでは、実際のサンプルコードを交えながら手順を詳しく解説します。 1. サンプルテーブルを作成する まず、デモ用のテーブル「DemoTable1420」を作成します。 mysql> create table DemoTable1420 -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, -> Fi