SELECT IN句の基本構文
SQLのSELECTでIN句を使用すると、指定した複数の値に合致するデータを抽出できます。
IN句の基本構文
SELECT 列名 FROM テーブル名 WHERE 列名 IN ('値1', '値2', ..., 値n);
本記事では IN 句を使った条件式の記述方法について解説していきます。
また、下記の「userテーブル」に次のようなデータが格納されていることを前提としています。
【userテーブル】
ID (id) | 名前 (name) | 住所 (address) | 年齢 (age) |
202000001 | 鈴木一郎 | 東京都渋谷区 | 44 |
202000002 | 佐藤次郎 | 大阪府大阪市 | 32 |
202000003 | 田中三郎 | 北海道札幌市 | 24 |
202000004 | 伊藤四郎 | 沖縄県那覇市 | 22 |
202000005 | 斎藤五郎 | 東京都品川区 | 55 |
スポンサーリンク
IN句の使い方
SELECT文の条件に「列名 IN ('値1', '値2')」(※カンマ区切りで複数の値を指定)とすると、指定した複数の値に合致するデータを抽出できます。
■IN句の例
SELECT * FROM user WHERE name IN ('鈴木一郎', '田中三郎');
■実行結果
+-----------+----------+--------------+------+
| id | name | address | age |
+-----------+----------+--------------+------+
| 202000001 | 鈴木一郎 | 東京都渋谷区 | 44 |
| 202000003 | 田中三郎 | 北海道札幌市 | 24 |
+-----------+----------+--------------+------+
2 rows in set (0.01 sec)
IN句を使わなくても次のように「OR」で結ぶことで、同じ結果が得られますが、IN句の方がSQLを短くできます。(IN句の中身が膨大になる程、ORよりINの方が良い)
SELECT * FROM user WHERE name = '鈴木一郎' OR name = '田中三郎';
NOT IN句の使い方
SELECT文の条件に「列名 NOT IN ('値1', '値2')」(※カンマ区切りで複数の値を指定)とすると、指定した複数の値に合致しないデータを抽出できます。
■NOT IN句の例
SELECT * FROM user WHERE name NOT IN ('鈴木一郎', '田中三郎');
■実行結果
+-----------+----------+--------------+------+
| id | name | address | age |
+-----------+----------+--------------+------+
| 202000002 | 佐藤次郎 | 大阪府大阪市 | 32 |
| 202000004 | 伊藤四郎 | 沖縄県那覇市 | 22 |
| 202000005 | 斎藤五郎 | 東京都品川区 | 55 |
+-----------+----------+--------------+------+
3 rows in set (0.00 sec)
helpful
この記事は役に立ちましたか?