SQL

【SQL】SELECT IN句の使い方

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