カテゴリ: PostgreSQL 更新日: 2026/03/07

PostgreSQLのIN・NOT IN完全入門|WHERE句で複数条件をやさしく検索する方法

PostgreSQLのIN/NOT INでリスト検索する方法
PostgreSQLのIN/NOT INでリスト検索する方法

先生と生徒の会話形式で理解しよう

生徒

「PostgreSQLでデータを探すとき、たくさんの条件をまとめて指定できるって聞いたんですが、本当ですか?」

先生

「できますよ。INやNOT INという書き方を使うと、複数の値を一気に指定して検索できます。」

生徒

「パソコンをほとんど触ったことがなくても理解できますか?」

先生

「大丈夫です。名簿から特定の人をまとめて探すイメージで、順番に説明します。」

1. PostgreSQLとSQLの基本的な考え方

1. PostgreSQLとSQLの基本的な考え方
1. PostgreSQLとSQLの基本的な考え方

PostgreSQLは、データベースと呼ばれる仕組みの一つです。データベースとは、たくさんの情報を表の形で整理して保存する大きな箱のようなものです。SQLは、その箱に対して「この条件に合うデータを見せてください」とお願いするための言葉です。

例えば、学校の名簿から「20歳以上の人だけを見たい」と思ったとき、人の目で一人ずつ確認するのは大変です。SQLを使うと、その条件を文章のように書くだけで、コンピューターが一瞬で探してくれます。

2. WHERE句とは何かをやさしく理解しよう

2. WHERE句とは何かをやさしく理解しよう
2. WHERE句とは何かをやさしく理解しよう

WHERE句は、SQLで条件を指定するときに使う部分です。「この条件に合う行だけを表示してください」という意味になります。日本語で言うと「〜だけ」という表現に近いです。

例えば「年齢が20歳の人だけ」という条件を指定したい場合、WHERE句を使います。ここで重要なのは、条件は一つだけでなく、複数指定できるという点です。

3. IN演算子で複数の値をまとめて検索する

3. IN演算子で複数の値をまとめて検索する
3. IN演算子で複数の値をまとめて検索する

INは「この中に含まれているかどうか」を確認するための書き方です。名簿で「山田さん、佐藤さん、鈴木さんをまとめて探したい」というときに使えます。

usersテーブル(SQL実行前)


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 22  | jiro@example.com
5  | 伊藤美咲   | 28  | misaki@example.com

SELECT *
FROM users
WHERE name IN ('山田太郎', '鈴木一郎');

このSQLは、「名前が山田太郎、または鈴木一郎の人を表示してください」という意味になります。

実行結果


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com

4. 数字のリストでもINは使える

4. 数字のリストでもINは使える
4. 数字のリストでもINは使える

INは文字だけでなく、数字にも使えます。例えば「年齢が19歳、22歳、28歳の人を探したい」といった場合です。


SELECT *
FROM users
WHERE age IN (19, 22, 28);

これは「年齢が19か22か28のどれかに当てはまる人」をまとめて探しています。紙の名簿で特定の年齢に丸を付けていく作業を、コンピューターが代わりにしてくれるイメージです。

5. NOT INで条件から除外する検索

5. NOT INで条件から除外する検索
5. NOT INで条件から除外する検索

NOT INは、INの逆の意味です。「この中に含まれていないもの」を探します。例えば「この人たち以外を表示したい」という場合に便利です。


SELECT *
FROM users
WHERE name NOT IN ('佐藤花子', '高橋次郎');

このSQLは、「佐藤花子さんと高橋次郎さん以外の人を表示してください」という意味になります。苦手な食べ物を避ける感覚に近い考え方です。

6. INとWHERE句を組み合わせると何が便利か

6. INとWHERE句を組み合わせると何が便利か
6. INとWHERE句を組み合わせると何が便利か

INを使うことで、条件を何度もORで書かなくて済みます。初心者の方がよく書いてしまうのが「AまたはBまたはC」という長い条件です。INを使うと、条件が短くなり、読みやすくなります。

読みやすいSQLは、後から見直したときにも理解しやすく、間違いも減らせます。これはデータベース操作ではとても大切な考え方です。

7. NULLがあるときのINとNOT INの注意点

7. NULLがあるときのINとNOT INの注意点
7. NULLがあるときのINとNOT INの注意点

データベースには、まだ値が入っていない状態を表すNULLという特別な値があります。NOT INを使うとき、NULLが含まれていると、思った通りの結果にならないことがあります。

初心者のうちは「空白のデータがあると、結果が変わることがある」という点だけ覚えておけば十分です。慣れてきたら、少しずつ仕組みを理解していきましょう。

8. IN検索は名簿探しの近道

8. IN検索は名簿探しの近道
8. IN検索は名簿探しの近道

PostgreSQLのINとNOT INは、たくさんの条件を一度に指定したいときの強い味方です。人の目で一つずつ探す代わりに、「このリストにあるかどうか」をコンピューターに判断してもらう仕組みです。

最初はSQLの書き方に戸惑うかもしれませんが、名簿や表を探すイメージで考えると、少しずつ理解できるようになります。

カテゴリの一覧へ
新着記事
New1
MySQL
【MySQL入門】LIMITとは何か?SELECT文で取得件数を制限する方法を初心者向けに徹底解説
New2
PostgreSQL
PostgreSQLのMAX・MIN完全解説|集約関数とGROUP BYで最大値・最小値を抽出する方法
New3
MySQL
MySQLのORDER BYで文字列を並び替える方法と注意点を徹底解説|SQL初心者向け完全ガイド
New4
PostgreSQL
PostgreSQLのSUM・AVG完全解説|集約関数とGROUP BYの計算時の注意点を初心者向けにやさしく説明
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLでスキーマを分割するメリット
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLのORDER BYの基本(昇順・降順)
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLのpublicスキーマの役割と扱い方
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLでよく使うデータ型一覧(文字列・数値・日付)