PostgreSQL EXISTS mit SELECT Operator (Beispiel)
⚡ Intelligente Zusammenfassung
PostgreSQL EXISTS ist ein boolescher Operator, der prüft, ob eine korrelierte Unterabfrage eine Zeile zurückgibt, wodurch SELECT-, INSERT-, UPDATE- und DELETE-Anweisungen Daten effizient nach dem Vorhandensein oder Fehlen übereinstimmender Datensätze filtern können.

Was ist EXISTS in PostgreSQL?
Das PostgreSQL VORHANDEN Der Operator EXISTS prüft, ob eine oder mehrere Zeilen in einer Unterabfrage vorhanden sind. Er wird also immer zusammen mit einer Unterabfrage verwendet. Die Bedingung des Operators EXISTS ist erfüllt, wenn mindestens eine Zeile in der Unterabfrage gefunden wird. Diese Operation kann zusammen mit SELECT-, UPDATE-, INSERT- und DELETE-Anweisungen verwendet werden.
PostgreSQL EXISTS-Abfragesyntax
Hier ist die Syntax für PostgreSQL EXISTS-Anweisung:
WHERE EXISTS (subquery);
Die obige Syntax zeigt, dass der EXISTS-Operator ein Argument annimmt, das eine Unterabfrage ist. Die Unterabfrage ist einfach eine SELECT-Anweisung das sollte mit einem SELECT * statt einer Liste von Spaltennamen oder Ausdrücken beginnen.
PostgreSQL EXISTS mit SELECT-Anweisung
Schauen wir uns an, wie man eine SELECT-Anweisung mit dem EXISTS-Operator verwendet. Wir haben die folgenden Tabellen:
Buch:
Preis:
Führen Sie die folgende Anweisung aus:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Dies gibt Folgendes zurück:
Der obige Befehl sollte alle Datensätze in der Buchtabelle zurückgeben, deren ID mit der ID aller Datensätze der Unterabfrage übereinstimmt. Es wurde nur eine ID gefunden. Daher wurde nur ein Datensatz zurückgegeben.
PostgreSQL EXISTS mit INSERT-Anweisung
Wir können den EXISTS-Operator in einem INSERT-Anweisung. Wir haben die folgenden 3 Tabellen:
Buch:
Preis:
Preis2:
Wir können dann die folgende Anweisung ausführen:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Die Preistabelle sieht nun wie folgt aus:
Die Zeile mit der ID 5 in der Tabelle „Price2“ wurde abgeglichen. Dieser Datensatz wurde dann in die Preistabelle eingefügt.
PostgreSQL EXISTS mit UPDATE-Anweisung
Wir können den EXISTS-Operator in einer UPDATE-Anweisung verwenden.
Führen Sie die folgende Abfrage aus:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Wir aktualisieren die Preisspalte der Preistabelle. Unser Ziel ist es, dass die Preise von Artikeln mit einer gemeinsamen ID gleich sind. Nur eine Zeile stimmte überein, nämlich 5.
Da die Preise jedoch gleich sind, also 205, wurde keine Aktualisierung vorgenommen. Wenn es einen Unterschied gäbe, wäre ein Update erfolgt.
PostgreSQL EXISTS mit DELETE-Anweisung
A PostgreSQL Die DELETE-Anweisung kann den EXISTS-Operator verwenden. Hier ist ein Beispiel:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Die Preistabelle sieht nun wie folgt aus:
Die Zeile mit der ID 5 wurde gelöscht.
PostgreSQL EXISTS-Anweisung mit pgAdmin
Neben der SQL-Shell lassen sich dieselben EXISTS-Abfragen auch visuell über die pgAdmin-Oberfläche ausführen. Sehen wir uns nun an, wie diese Aktionen mit pgAdmin durchgeführt werden können:
Mit SELECT-Anweisung
Nachfolgend sind die Schritte zur Verwendung einer EXISTS-Abfrage aufgeführt. PostgreSQL mit einer SELECT-Anweisung unter Verwendung von pgAdmin:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an. Öffnen Sie pgAdmin und melden Sie sich mit Ihren Zugangsdaten an.
Schritt 2) Erstellen Sie eine Demo-Datenbank.
- Klicken Sie in der Navigationsleiste links auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die folgende Abfrage in den Abfrageeditor ein:
SELECT * FROM Book WHERE EXISTS (SELECT * FROM Price WHERE Book.id = Price.id);
Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.
Es sollte Folgendes zurückgeben:
Mit INSERT-Anweisung
Um dasselbe über pgAdmin zu erreichen, gehen Sie wie folgt vor:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste links auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:
INSERT INTO Price SELECT id, price FROM Price2 WHERE EXISTS (SELECT id FROM Book WHERE Book.id = Price2.id);
Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.
Die Preistabelle sollte nun wie folgt aussehen:
Mit UPDATE-Anweisung
Um dasselbe über pgAdmin zu erreichen, gehen Sie wie folgt vor:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste links auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:
UPDATE Price SET price = (SELECT price FROM Price2 WHERE Price2.id = Price.id) WHERE EXISTS (SELECT id, price FROM Price2 WHERE Price2.id = Price.id);
Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.
Die Preistabelle sollte nun wie folgt aussehen:
Mit DELETE-Anweisung
Um dasselbe über pgAdmin zu erreichen, gehen Sie wie folgt vor:
Schritt 1) Melden Sie sich bei Ihrem pgAdmin-Konto an.
Schritt 2)
- Klicken Sie in der Navigationsleiste links auf Datenbanken.
- Klicken Sie auf Demo.
Schritt 3) Geben Sie die Abfrage im Abfrageeditor ein:
DELETE FROM Price WHERE EXISTS (SELECT * FROM Price2 WHERE Price.id = Price2.id);
Schritt 4) Klicken Sie auf die Schaltfläche „Ausführen“.
Die Preistabelle sollte nun wie folgt aussehen:
Laden Sie die in diesem Tutorial verwendete Datenbank herunter





















