PostgreSQL IN, nicht IN mit Beispielen

⚡ Intelligente Zusammenfassung

PostgreSQL Der IN-Operator prüft, ob ein Wert in einer Liste oder Unterabfrage innerhalb einer WHERE-Klausel vorkommt und ersetzt so mehrere OR-Bedingungen in SELECT-, UPDATE-, INSERT- und DELETE-Anweisungen für eine sauberere, schnellere und besser lesbare Filterung.

  • 📋 Syntax: Die Funktion value IN (list) gibt true zurück, wenn der Wert mit einem Listenelement übereinstimmt.
  • 🔤 Charakterlisten: Setzen Sie Textwerte in einfache Anführungszeichen innerhalb der Klammern.
  • 🔢 Zahlenlisten: Vergleichen Sie die Zahlen direkt, ohne Anführungszeichen, um exakte Übereinstimmungen zu erhalten.
  • 🚫 NICHT IN: Gibt Zeilen zurück, deren Wert in der angegebenen Liste fehlt.
  • ⚠️ NULL-Falle: Ein NULL-Wert innerhalb von NOT IN kann stillschweigend null Zeilen zurückgeben.
  • 🤖 KI-Anfragen: Assistenten erstellen IN-Klauseln und kennzeichnen NULL-Werte sowie Leistungsrisiken.

PostgreSQL IN, NICHT IN mit Beispielen

Was ist PostgreSQL IN?

Der IN-Operator wird in einer WHERE-Klausel verwendet, um zu prüfen, ob ein Wert in einer Liste anderer Werte enthalten ist. Die IN-Operation trägt dazu bei, die Notwendigkeit mehrerer OR-Bedingungen in SELECT-, UPDATE-, INSERT- oder DELETE-Anweisungen zu reduzieren.

Syntax

Der IN-Operator hat die folgende Syntax:

value IN (value_1, value_2, ...)

Der Wert ist der Wert, nach dem Sie in der Liste suchen.

Der Wert_1, der Wert_2… sind die Listenwerte.

Wenn der Wert in der Liste gefunden wird, gibt der Operator „true“ zurück.

Die Liste kann eine Menge von Zahlen oder Zeichenketten sein, oder sogar das Ausgabeergebnis einer SELECT-Anweisung wie unten dargestellt:

value IN (SELECT value FROM table-name);

Die in Klammern gesetzte Anweisung wird als Unterabfrage bezeichnet.

PostgreSQL IN Mit Charakter

Wir zeigen Ihnen, wie Sie den IN-Operator mit Zeichenwerten verwenden können.

Betrachten Sie die folgende Tabelle:

Angestellte:

PostgreSQL IN Mit Charakter

Lassen Sie uns die folgende Abfrage für die obige Tabelle ausführen:

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

Es wird Folgendes zurückgegeben:

PostgreSQL IN Mit Zeichen Ergebnis

Wir haben eine Liste mit drei Namen. Wir suchen in der Namensspalte der Mitarbeitertabelle nach Einträgen, die diesen Namen enthalten. Der Name Kate Joel wurde in einem der Datensätze gefunden, und seine Details wurden angezeigt.

PostgreSQL IN Mit Numerisch

Sehen wir uns nun an, wie wir den IN-Operator mit numerischen Werten verwenden können.

Beachten Sie die unten angegebene Preistabelle:

Preis:

PostgreSQL IN Mit Numerisch

Wir können die folgende Abfrage für die Tabelle ausführen:

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

Dies gibt Folgendes zurück:

PostgreSQL IN Mit numerischem Ergebnis

Wir haben eine Liste mit 4 numerischen Werten erstellt. Wir prüfen, ob wir einen dieser Werte mit den Werten in der Spalte „Preis“ der Tabelle „Preis“ abgleichen können. Zwei Werte wurden abgeglichen und ihre Details wurden zurückgegeben.

Verwendung des NICHT OperaDo.

Der IN-Operator kann zusammen mit dem NOT-Operator verwendet werden. Er gibt die Werte zurück, die in der angegebenen Spalte nicht gefunden wurden. Wir werden dies anhand der Price-Tabelle demonstrieren.

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

Dies gibt Folgendes zurück:

PostgreSQL Bei Verwendung des NOT-Operators

Wir haben eine Liste mit 4 numerischen Werten erstellt. Wir prüfen die Preisspalte der Preistabelle auf Werte, die nicht Teil der Liste sind. Zwei Werte, 250 und 300, wurden nicht gefunden. Daher wurden ihre Details zurückgegeben.

Verwenden von pgAdmin

Neben der SQL-Shell können die gleichen IN- und NOT IN-Abfragen auch visuell über die pgAdmin-Oberfläche ausgeführt werden.

Mit Charakter

Um dasselbe über pgAdmin zu erreichen, gehen Sie wie folgt vor:

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. Klicken Sie auf Demo.

Verwenden von pgAdmin mit Charakter

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

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

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

Verwendung von pgAdmin mit einer Zeichenabfrage

Es sollte Folgendes zurückgeben:

Verwendung von pgAdmin mit Zeichenergebnis

Mit Numerisch

Um dasselbe über pgAdmin zu erreichen, gehen Sie wie folgt vor:

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. Klicken Sie auf Demo.

Verwenden von pgAdmin mit Numeric

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

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

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

Verwendung von pgAdmin mit numerischer Abfrage

Es sollte Folgendes zurückgeben:

Verwendung von pgAdmin mit numerischem Ergebnis

Verwendung des NICHT OperaDo.

Um dasselbe über pgAdmin zu erreichen, gehen Sie wie folgt vor:

Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.

Schritt 2)

  1. Klicken Sie in der Navigationsleiste links auf Datenbanken.
  2. Klicken Sie auf Demo.

Verwendung des NOT-Operators in pgAdmin

Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:

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

Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.

Abfrage mit dem NOT-Operator in pgAdmin

Es sollte Folgendes zurückgeben:

Die Verwendung des NOT-Operators führt zu einem Ergebnis in pgAdmin

Laden Sie die in diesem Tutorial verwendete Datenbank herunter

Häufig gestellte Fragen

In PostgreSQLEXISTS ist bei großen Unterabfragen oft schneller als IN, da es beim ersten Treffer stoppt. Für kleine, konstante Listen ist IN einfach und effizient. Testen Sie beide mit EXPLAIN ANALYZE anhand Ihrer eigenen Daten.

NOT IN behandelt NULL als unbekannt. Enthält die Liste oder Unterabfrage also einen NULL-Wert, kann die gesamte Bedingung als unbekannt ausgewertet werden und null Zeilen zurückgeben. Filtern Sie NULL-Werte heraus oder verwenden Sie stattdessen NOT EXISTS.

IN ersetzt lange Ketten von OR-Bedingungen durch eine einzige, lesbare Klausel. WHERE id IN (1,2,3) entspricht WHERE id=1 OR id=2 OR id=3, ist aber kürzer, übersichtlicher und leichter zu pflegen.

Ja. PostgreSQL Behandelt x IN (a, b, c) als äquivalent zu x = ANY (ARRAY[a, b, c]). Beide liefern dasselbe Ergebnis und in der Regel denselben Abfrageplan.

KI-Assistenten generieren IN-Klauseln aus einfachem Englisch, schlagen die korrekte Werteliste vor und kennzeichnen NULL-Risiken in NOT IN. Sie überarbeiten außerdem langsame Abfragen und fügen EXPLAIN-Hinweise zur Optimierung hinzu.

Ja. Die Tools von AI Copilot erkennen wiederholte ODER-Bedingungen in einer Spalte und wandeln diese in eine einzige IN-Liste um, wodurch die Lesbarkeit verbessert und die Wahrscheinlichkeit von Logikfehlern verringert wird.

Ja. Setzen Sie eine SELECT-Anweisung in die Klammern: WHERE id IN (SELECT id FROM orders). Die innere Abfrage, auch Unterabfrage genannt, liefert die Liste der Werte, die mit IN geprüft werden.

Bei großen Tabellen ist NOT EXISTS oder ein LEFT JOIN mit IS NULL in der Regel NOT IN überlegen, weil PostgreSQL Erstellt einen effizienten Anti-Join. Stellt außerdem sicher, dass die verglichenen Spalten indiziert sind.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: