SQL

【SQL】SELECT IN句の使い方

2021年1月18日

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