Direkt zum Inhalt
Urkunden
JSON-FunktionenTabellen & Schema ManagementMathe-FunktionenDatenbankenString-FunktionenAuslöserIndizesDatum FunktionenBasic Syntax

PostgreSQL IN

Die `IN` Klausel in PostgreSQL wird verwendet, um Zeilen danach zu filtern, ob der Wert einer Spalte mit einem Wert in einer angegebenen Liste übereinstimmt. Sie wird häufig in `SELECT`-, `UPDATE`- und `DELETE`-Anweisungen verwendet, um Abfragen mit mehreren Werten zu vereinfachen.

Verwendung

Die "IN"-Klausel wird verwendet, wenn du prüfen musst, ob ein Wert innerhalb einer Gruppe von Werten existiert. Sie vereinfacht Abfragen, da mehrere Werte auf einmal geprüft werden können.

SELECT column_name
FROM table_name
WHERE column_name IN (value1, value2, ...);

In dieser Syntax wird die `IN`-Klausel verwendet, um festzustellen, ob `Spaltenname` mit einem der in den Klammern angegebenen Werte übereinstimmt.

Beispiele

1. Grundlegende IN-Verwendung

SELECT *
FROM products
WHERE category_id IN (1, 2, 3);

Diese Abfrage wählt alle Spalten aus der Tabelle "Produkte" aus, in denen "category_id" entweder 1, 2 oder 3 ist.

2. Verwendung von IN mit Strings

SELECT employee_id, name
FROM employees
WHERE department IN ('Sales', 'Marketing');

In diesem Beispiel werden `employee_id` und `name` aus der Tabelle `employees` für diejenigen abgefragt, die in den Abteilungen 'Sales' oder 'Marketing' arbeiten.

3. IN mit Unterabfrage

SELECT order_id, order_date
FROM orders
WHERE customer_id IN (SELECT customer_id FROM customers WHERE country = 'USA');

Hier wird die "IN"-Klausel mit einer Unterabfrage verwendet, um Bestellungen zu finden, bei denen der Kunde aus den USA stammt. Beachte, dass die Subquery eine einzelne Spalte zurückgeben muss, um mit `IN` verwendet zu werden.

Tipps und bewährte Praktiken

  • Verwende IN für mehr Klarheit. Entscheide dich für "IN", wenn du gegen mehrere Werte prüfst, um die Lesbarkeit gegenüber mehreren "OR"-Bedingungen zu verbessern.
  • Berücksichtige die Leistung. Bei großen Listen solltest du einen Tabellen-Join oder eine temporäre Tabelle verwenden, um die Abfrageleistung zu optimieren. Das Verbinden von Tabellen über indizierte Spalten kann effizienter sein als die Verwendung von `IN` mit einer großen Liste von Werten.
  • Nutze Unterabfragen. Nutze Unterabfragen innerhalb von `IN`, um komplexe Bedingungen und dynamisch generierte Listen zu behandeln.
  • Vermeide Null-Fallen. Denke daran, dass das Ergebnis `false` ist, wenn ein Wert in der Liste `NULL` ist, es sei denn, er wird explizit behandelt. Ziehe in Erwägung, `IS NOT NULL` explizit zu verwenden, um mögliche `NULL`-Werte in der Liste zu behandeln, da `IN` zu `false` ausgewertet wird, wenn ein Wert `NULL` ist.