PostgreSQL WHERE EXISTS Query

PostgreSQL: Verwenden der where EXISTS Klausel

Wenn eine SQL-Abfrage in einer anderen SQL-Abfrage verwendet wird, wird sie als Unterabfrage bezeichnet. Die komplizierte Abfrage kann einfach geschrieben werden, indem eine große Abfrage in mehrere Unterabfragen unterteilt wird. EXISTS-Klausel wird mit einer Unterabfrage in einer SQL-Anweisung verwendet. Die Ausgabe von EXISTS hängt von der Anzahl der von der Unterabfrage zurückgegebenen Datensätze ab, nicht jedoch von den Werten der Datensätze. Das Ergebnis von EXISTS ist true, wenn die zugehörige Unterabfrage mindestens eine Zeile zurückgibt. Wie Sie die EXISTS- und NOT EXISTS-Klausel in select-, insert-, update- und delete-Anweisungen verwenden können, wird in diesem Tutorial anhand verschiedener Beispiele gezeigt.

Syntax der EXISTS-Klausel:

WÄHLEN SIE col1, col2, col3 …..
FROM table_name1
WHERE EXISTS( WÄHLEN SIE 1
FROM
table_name2
WHERE col1 = table_name1 .col1);

Erstellen Sie drei Tabellen mit den Namen company, items und customers und fügen Sie einige Daten ein. Führen Sie die folgende Select-Abfrage aus, um den Inhalt dieser Tabellen anzuzeigen.

SELECT * from company;
SELECT * from items;
AUSWÄHLEN * von Kunden;

Beispiel 1: Verwenden der EXISTS-Klausel in der SELECT-Abfrage

(a) EXISTS

Die folgende Abfrage ruft Datensätze aus der items-Tabelle basierend auf der company-Tabelle ab. Die Unterabfrage durchsucht alle Datensätze aus der Firmentabelle, wobei company_id der Firmentabelle gleich company_id der Elementtabelle ist und der Wert des Telefonfelds nicht leer ist. Es gibt einen Datensatz in der Firmentabelle, der keine Telefonnummer enthält, und dieser Datensatz wird in der Ausgabe weggelassen.

SELECT item_id, name, quantity
FROM items
WHERE EXISTS (WÄHLEN SIE 1
FROM company
WHERE items .company_id = Unternehmen.company_id und Firma.telefonieren<>“);

Ausgabe:

Der Datensatz von LG hat keinen Telefoneintrag in der Firmentabelle. Es wird also nicht in der Ausgabe angezeigt.

( b)NOT EXISTS

NOT EXISTS Klausel ist das Gegenteil von EXISTS Klausel. Die folgende Abfrage ruft diese Datensätze aus der items-Tabelle ab, wenn die Unterabfrage false zurückgibt.

SELECT item_id, name, quantity
FROM items
WHERE NOT EXISTS (WÄHLEN SIE 1
FROM company
WHERE items .company_id = Unternehmen.company_id und Firma.website_url ist NULL);

Ausgabe:

Es gibt keinen Datensatz in der Firmentabelle, in dem website_url NULL ist. Daher ist die Ausgabe der Unterabfrage für alle Datensätze falsch und alle Datensätze der items-Tabelle werden abgerufen.

Beispiel-2: Verwenden der EXISTS-Klausel in der INSERT-Abfrage

Gemäß der folgenden Insert-Abfrage werden die Daten in die items-Tabelle eingefügt, wenn company_id der Tabellen company und customers gleich sind.

INSERT INTO items
(company_id)
SELECT company_id
FROM customers
WHERE EXISTS (Wählen Sie 1
FROM company,customers
WHERE customers .company_id = Unternehmen.unternehmen_id);

Ausgabe:

Es gibt drei Einträge für company_id in der Tabelle customers mit den Werten 1 und 2. Die Unterabfrage gibt also dreimal true zurück und drei Datensätze werden eingefügt.

Führen Sie die Select-Abfrage aus, um den Inhalt der Tabelle zu überprüfen.

Beispiel 3: Verwenden der EXISTS-Klausel in der UPDATE-Abfrage

Die folgende Abfrage aktualisiert die Datensätze der items-Tabelle, in der company_id 1 ist, und die Unterabfrage gibt true zurück.

Elemente AKTUALISIEREN
SET name=’Nokia‘
WHERE company_id=1 and EXISTS (SELECT 1
FROM items
WHERE name=’Not Assign‘);

Ausgang:

Hier gibt die Unterabfrage dreimal true zurück und company_id ist 1 für drei Datensätze. Drei Datensätze werden nach Ausführung der Aktualisierungsabfrage aktualisiert.

Führen Sie die Select-Abfrage aus, um den Inhalt der Tabelle zu überprüfen.

Beispiel 4: Verwenden der EXISTS-Klausel in der DELETE-Abfrage

Die folgende Abfrage löscht die Datensätze der items-Tabelle, in der company_id 1 ist, und die Unterabfrage gibt true zurück.

DELETE FROM items
WHERE company_id=1 and EXISTS (SELECT 1
FROM items
WHERE name=’Not Assign‘);

Ausgabe:

Es gibt drei Datensätze mit dem Wert 1 von company_id und ein Datensatz hat den Namenswert ‚Nicht zuweisen‘. Die Bedingung gilt also dreimal und löscht drei Datensätze aus der Elementtabelle.

Führen Sie die Select-Abfrage aus, um den Inhalt der Tabelle zu überprüfen.

Ich hoffe, Sie haben nach dem Lesen dieses Lernprogramms eine klare Vorstellung von der Verwendung der EXISTS-Klausel in der SQL-Abfrage.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.