MySQLのWHERE句で複数の値(x、y、z)を指定する方法|IN演算子の使い方
MySQLで「WHERE カラム名 = 'x'」のように単一の値を抽出する場合は等号(=)を使いますが、「x、y、zのように複数の値のいずれかに一致するレコードを取得したい」というケースはよくあります。そのような場合に便利なのがIN演算子です。
IN演算子の基本構文
IN演算子を使うと、複数の候補値のいずれかに一致する行を一度に取得できます。構文は以下のとおりです。
SELECT *FROM テーブル名
WHERE カラム名 IN('値1','値2','値3',...........N);
サンプルテーブルの作成
それでは、実際にテーブルを作成して動きを確認してみましょう。まずはテーブル作成用のクエリです。
mysql> create table InOperatorDemo
-> (
-> ClientId int
-> );
Query OK, 0 rows affected (0.52 sec)
テストデータの挿入
次に、INSERT文を使っていくつかのレコードを挿入します。
mysql> insert into InOperatorDemo values(101);
Query OK, 1 row affected (0.19 sec)
mysql> insert into InOperatorDemo values(110);
Query OK, 1 row affected (0.11 sec)
mysql> insert into InOperatorDemo values(120);
Query OK, 1 row affected (0.17 sec)
mysql> insert into InOperatorDemo values(230);
Query OK, 1 row affected (0.11 sec)
mysql> insert into InOperatorDemo values(270);
Query OK, 1 row affected (0.15 sec)
mysql> insert into InOperatorDemo values(300);
Query OK, 1 row affected (0.14 sec)
登録データの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select *from InOperatorDemo;
実行結果は以下のとおりです。
+----------+
| ClientId |
+----------+
| 101 |
| 110 |
| 120 |
| 230 |
| 270 |
| 300 |
+----------+
6 rows in set (0.00 sec)
IN演算子を使った抽出クエリ
ここからが本題です。ClientIdが「120」「270」「300」のいずれかに一致するレコードをIN演算子で抽出してみます。
mysql> select *from InOperatorDemo where ClientId IN('120','270','300');実行結果は以下のとおりです。指定した3つの値に一致するレコードだけが正しく取得できていますね。
+----------+
| ClientId |
+----------+
| 120 |
| 270 |
| 300 |
+----------+
3 rows in set (0.00 sec)
まとめ
複数の値を検索条件にしたい場合は、OR条件を何度も書き連ねる代わりにIN演算子を使うことで、SQLをシンプルかつ読みやすくできます。候補値はカンマ区切りで必要なだけ列挙できるので、大量のデータを扱う際にも活用してみてください。
-
MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説
MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query
-
【MySQL】特定の列の値が0のみの行を別の列でグループ化して抽出する方法
はじめに 「ある列の値が0のみの行を抽出し、さらに別の列でグループ化したい」,そんな場合には、GROUP BY句とHAVING句を組み合わせるのが効果的です。この記事では、実際にテーブルを作成し、データを挿入しながら、目的の結果を得るまでの手順を具体例とともに解説します。 1. サンプルテーブルの作成 まずはCREATE TABLE文でテーブルを作成しましょう。 mysql> create table DemoTable1344 -> ( -> `SequenceId` int NOT NULL AUTO_INCREMENT PRIMARY KEY,