【MySQL】1つのクエリで複数の行を取得する方法(IN演算子の使い方)
概要
MySQLで1つのクエリだけで複数の行を取得したい場合は、IN演算子を使用します。WHERE句の中で IN(値1, 値2, …) のようにカンマ区切りで条件を指定すると、いずれかの値に一致するすべての行をまとめて取得できます。本記事では、サンプルテーブルを作成しながら、具体的な手順をわかりやすく解説します。
1. テーブルを作成する
まず、動作確認用のテーブルを作成しましょう。
mysql> create table DemoTable
(
Id int,
Name varchar(100)
);
Query OK, 0 rows affected (0.60 sec)
2. レコードを挿入する
INSERTコマンドを使用して、テーブルに複数のレコードを追加します。
mysql> insert into DemoTable values(100,'Chris');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values(110,'David');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values(120,'Robert');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values(130,'Mike');
Query OK, 1 row affected (0.13 sec)
3. 全レコードを確認する
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+------+--------+
| Id | Name |
+------+--------+
| 100 | Chris |
| 110 | David |
| 120 | Robert |
| 130 | Mike |
+------+--------+
4 rows in set (0.00 sec)
4. IN演算子で複数の行を取得する
それでは、1つのMySQLクエリで複数の行を取得してみましょう。WHERE句とIN演算子を組み合わせて使用します。
mysql> select *from DemoTable where Id IN(100,120,130);
このクエリを実行すると、Idが100・120・130のいずれかに一致する行だけが抽出されます。
+------+--------+
| Id | Name |
+------+--------+
| 100 | Chris |
| 120 | Robert |
| 130 | Mike |
+------+--------+
3 rows in set (0.02 sec)
まとめ
IN演算子を活用すれば、「Id = 100 OR Id = 120 OR Id = 130」のようにOR条件を繰り返し記述する必要がなくなり、SQL文がシンプルで読みやすくなります。特に指定する値が多い場合に効果的な手法なので、ぜひ日常的なデータベース操作に取り入れてみてください。
-
MySQLのUPDATE文で1つのクエリを使って複数のレコードを更新する方法
MySQLでは、UPDATEステートメントを使うことで、1つのクエリで複数のカラムや複数のレコードの値をまとめて更新できます。この記事では、実際にサンプルテーブルを作成し、UPDATE文でデータを更新する具体的な手順を解説します。サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, &
-
MySQLで1つのINSERT文を使って列に複数の値を一括挿入する方法
はじめにMySQLでは、1つのINSERT文を繰り返し実行しなくても、単一のクエリだけで同じ列に複数の値を挿入できます。VALUES句の後ろに、挿入したい値をカンマ区切りのタプル(行)として列挙するだけです。この方法はデータベースへの接続回数を減らせるため、大量のデータを登録する際にパフォーマンス面でも大きなメリットがあります。基本構文複数の値を1つの列に挿入する場合の基本構文は以下のとおりです。INSERT INTO テーブル名 VALUES(値1),(値2),...,(値N);このように、各値を丸括弧で囲み、カンマ(,)で区切って並べることで、1回のクエリで複数行をまとめて挿入できます。実