PostgreSQL IN、非INの例と

⚡ スマートサマリー

PostgreSQL IN演算子は、WHERE句内のリストまたはサブクエリに値が含まれているかどうかをチェックし、SELECT、UPDATE、INSERT、DELETE文全体にわたる複数のOR条件を置き換えることで、より簡潔で高速かつ読みやすいフィルタリングを実現します。

  • ???? 構文: value IN (list) は、値がリストのいずれかの項目と一致する場合に true を返します。
  • 🔤 キャラクター一覧: 括弧内のテキスト値は、シングルクォーテーションで囲んでください。
  • 🔢 数値リスト: 正確な一致を確認するには、引用符なしで数値を直接比較してください。
  • 🚫 含まれていない: 指定されたリストに値が存在しない行を返します。
  • ⚠️ NULLトラップ: NOT IN句の中にNULLを入れると、何も警告なしに0行が返されることがあります。
  • 🤖 AIクエリ: アシスタントはIN句を作成し、NULL値やパフォーマンスリスクを警告します。

PostgreSQL IN、NOT INの例

何ですか PostgreSQL の?

IN演算子は、WHERE句で使用され、ある値が他の値のリストに含まれているかどうかをチェックします。IN演算子を使用することで、SELECT、UPDATE、INSERT、DELETE文で複数のOR条件を使用する必要性を減らすことができます。

構文

IN 演算子の構文は次のとおりです。

value IN (value_1, value_2, ...)

値は、リスト内で確認している値です。

value_1、value_2… はリストの値です。

リスト内に値が見つかった場合、演算子は true を返します。

リストは数値や文字列の集合、あるいは出力結果でも構いません。 SELECTステートメント 以下のように:

value IN (SELECT value FROM table-name);

括弧内に置かれたステートメントはサブクエリと呼ばれます。

PostgreSQL 個性的な人物と共に

IN 演算子を文字値で使用する方法を説明します。

次の表を検討してください。

従業員:

PostgreSQL 個性的な人物と共に

上記のテーブルに対して次のクエリを実行してみましょう。

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

以下のような結果が返されます。

PostgreSQL 文字結果とともに

3つの名前のリストがあります。これらの名前のいずれかが、従業員テーブルの名前列に存在するかどうかを検索しています。ケイト・ジョエルはテーブルのレコードの1つと一致し、その詳細が返されました。

PostgreSQL IN 数字付き

ここで、数値に対して IN 演算子を使用する方法を見てみましょう。

以下の価格表を考えてみましょう。

価格:

PostgreSQL IN 数字付き

テーブルに対して次のクエリを実行できます。

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

これにより、次が返されます。

PostgreSQL IN 数値結果付き

4 つの数値を含むリストを作成しました。これらの値のいずれかが、Price テーブルの価格列に含まれる値と一致するかどうかを確認しています。XNUMX つの値が一致し、その詳細が返されました。

NOT を使用する Operaタ

IN 演算子は NOT 演算子と一緒に使用できます。指定された列に見つからない値を返します。これを説明するために Price テーブルを使用します。

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

次のように返されます。

PostgreSQL IN NOT演算子の使用

4 つの数値のリストを作成しました。Price テーブルの価格列で、リストに含まれていない値をチェックしています。250 と 300 の XNUMX つの値は見つかりませんでした。そのため、それらの詳細が返されました。

pgAdminの使用

SQLシェル以外にも、同じINクエリとNOT INクエリをpgAdminインターフェースを通して視覚的に実行できます。

キャラクターあり

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

キャラクターを使用した pgAdmin の使用

ステップ3) クエリ エディターにクエリを入力します。

SELECT * FROM Employees WHERE name IN ('James John', 'Mercy Bush', 'Kate Joel');

ステップ4) 「実行」ボタンをクリックします。

pgAdminと文字クエリの使用

次のような結果が返されます。

pgAdminを文字結果とともに使用する

数値あり

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

pgAdmin を数値で使用する

ステップ3) クエリ エディターにクエリを入力します。

SELECT * FROM Price WHERE price IN (200, 308, 250, 550);

ステップ4) 「実行」ボタンをクリックします。

pgAdminと数値クエリの使用

次のような結果が返されます。

数値結果でpgAdminを使用する

NOT を使用する Operaタ

pgAdmin を使用して同じことを実行するには、次の手順を実行します。

ステップ1) pgAdmin アカウントにログインします。

ステップ2)

  1. 左側のナビゲーション バーで、[データベース] をクリックします。
  2. 「デモ」をクリックします。

pgAdminでNOT演算子を使用する

ステップ3) クエリ エディターにクエリを入力します。

SELECT * FROM Price WHERE price NOT IN (200, 400, 190, 230);

ステップ4) 「実行」ボタンをクリックします。

pgAdminでNOT演算子クエリを使用する

次のような結果が返されます。

pgAdminでNOT演算子を使用すると結果が変わります

このチュートリアルで使用するデータベースをダウンロードする

よくあるご質問

In PostgreSQLEXISTS は、最初の一致で停止するため、大規模なサブクエリでは IN よりも高速に実行されることがよくあります。小さな定数リストの場合は、IN がシンプルで効率的です。ご自身のデータで EXPLAIN ANALYZE を使用して、両方をテストしてみてください。

NOT IN は NULL を不明として扱うため、リストまたはサブクエリに NULL が含まれている場合、条件全体が不明と評価され、0 行が返される可能性があります。NULL を除外するか、代わりに NOT EXISTS を使用してください。

IN句は、長いOR条件の連鎖を1つの読みやすい句に置き換えます。WHERE id IN (1,2,3)はWHERE id=1 OR id=2 OR id=3と同じですが、より短く、明確で、保守が容易です。

Yes. PostgreSQL x IN (a, b, c) は、x = ANY (ARRAY[a, b, c]) と同等として扱われます。どちらも同じ結果と、通常は同じクエリプランを生成します。

AIアシスタントは、平易な英語からIN句を生成し、適切な値リストを提案し、NOT IN句におけるNULL値のリスクを警告します。また、処理速度の遅いクエリを書き換え、チューニングのためのEXPLAINヒントを追加します。

はい。AI Copilotツールは、1つの列に重複するOR条件を検出し、それらを単一のINリストにリファクタリングすることで、可読性を向上させ、論理エラーの可能性を低減します。

はい。括弧の中にSELECT文を入れてください:WHERE id IN (SELECT id FROM orders)。サブクエリと呼ばれるこの内部クエリは、IN句でチェックされる値のリストを提供します。

大きなテーブルの場合、NOT EXISTS または IS NULL を使用した LEFT JOIN は通常 NOT IN よりも優れたパフォーマンスを発揮します。 PostgreSQL 効率的なアンチジョインを構築します。また、比較対象の列にインデックスが設定されていることを確認してください。