Zusammenfassung: In diesem Tutorial lernen Sie, wie Sie den PostgreSQL EXISTS-Operator verwenden, um auf die Existenz von Zeilen in einer Subquery zu testen.

Einführung in den PostgreSQL EXISTS-Operator

Der EXISTS-Operator ist ein boolescher Operator, der auf das Vorhandensein von Zeilen in einer Subquery testet.

Das Folgende illustriert die Syntax des EXISTS-Operators:

EXISTS (subquery)

Der EXISTS akzeptiert ein Argument, das eine Subquery ist.

Wenn die Subquery mindestens eine Zeile zurückgibt, ist das Ergebnis von EXISTS wahr. Liefert die Subquery keine Zeile, ist das Ergebnis von EXISTS falsch.

Der Operator EXISTS wird oft mit der korrelierten Subquery verwendet.

Das Ergebnis des EXISTS-Operators hängt davon ab, ob eine Zeile von der Unterabfrage zurückgegeben wird, und nicht vom Zeileninhalt. Daher sind die Spalten, die in der SELECT-Klausel der Subquery erscheinen, nicht wichtig.

Aus diesem Grund ist es üblich, EXISTS in der folgenden Form zu schreiben:

Beachten Sie, dass, wenn die Subquery NULL zurückgibt, das Ergebnis von EXISTS wahr ist.

PostgreSQL EXISTS Beispiele

Wir verwenden für die Demonstration die folgenden customerund payment Tabellen in der Beispieldatenbank:

Kunden- und Zahlungstabellen

A) Finde Kunden, die mindestens eine Zahlung haben, deren Betrag größer als 11 ist.

Die folgende Anweisung gibt Kunden zurück, die mindestens eine Miete mit einem Betrag größer als 11 bezahlt haben:

SELECT first_name, last_nameFROM customer cWHERE EXISTS (SELECT 1 FROM payment p WHERE p.customer_id = c.customer_id AND amount > 11 )ORDER BY first_name, last_name;

Die Abfrage gibt die folgende Ausgabe zurück:

PostgreSQL EXISTS Beispiel

In diesem Beispiel wird für jeden Kunden in der Tabelle customer, überprüft die Subquery die Tabelle payment, um herauszufinden, ob dieser Kunde mindestens eine Zahlung (p.customer_id = c.customer_id) geleistet hat und der Betrag größer als 11 ist ( amount > 11)

B) NOT EXISTS Beispiel

Der NOT Operator negiert das Ergebnis des EXISTS Operators. Das NOT EXISTS ist das Gegenstück zum EXISTS. Das bedeutet, dass das NOT EXISTS true zurückgibt, wenn die Subquery keine Zeile zurückgibt. Wenn die Subquery eine oder mehrere Zeilen zurückgibt, gibt das NOT EXISTS false zurück.

Das folgende Beispiel gibt Kunden zurück, die keine Zahlung geleistet haben, die größer als 11 ist.

SELECT first_name, last_nameFROM customer cWHERE NOT EXISTS (SELECT 1 FROM payment p WHERE p.customer_id = c.customer_id AND amount > 11 )ORDER BY first_name, last_name;

Hier ist die Ausgabe:

PostgreSQL NOT EXISTS Beispiel

C) EXISTS und NULL

Wenn die Subquery NULL zurückgibt, liefert EXISTS true. Siehe das folgende Beispiel:

SELECTfirst_name,last_nameFROMcustomerWHEREEXISTS( SELECT NULL )ORDER BYfirst_name,last_name;
Code language: SQL (Structured Query Language) (sql)

In diesem Beispiel hat die Subquery NULL zurückgegeben, daher hat die Abfrage alle Zeilen aus der Tabelle customer zurückgegeben.

PostgreSQL EXIST mit NULL Beispiel

In diesem Tutorial haben Sie gelernt, wie Sie die PostgreSQL EXISTS auf die Existenz von Zeilen in der Subquery testen können.

  • War dieses Tutorial hilfreich?
  • JaNein

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.