PostgreSQL wo existiert Abfrage

PostgreSQL wo existiert Abfrage

PostgreSQL: Verwenden Sie die existierende Klausel

Wenn in einer anderen SQL -Abfrage eine SQL -Abfrage verwendet wird, wird sie als Unterabfrage bezeichnet. Die komplizierte Abfrage kann leicht geschrieben werden, indem eine große Abfrage in mehrere Unterabfragen geteilt wird. Existiert Klausel wird mit einer Unterabfrage in einer SQL -Anweisung verwendet. Die Ausgabe von existieren hängt von der Anzahl der von der Unterabfrage zurückgegebenen Datensätze ab, hängt jedoch nicht von den Werten der Datensätze ab. Das Ergebnis von existieren wird wahr, wenn die zugehörige Unterabfrage mindestens eine Zeile zurückgibt. Wie Sie verwenden können, existiert und keine Klausel in Auswahl, Einfügen, Aktualisieren und Löschen von Anweisungen werden in diesem Tutorial anhand verschiedener Beispiele angezeigt.

Existiert Klauselsyntax:

Wählen Sie Col1, Col2, Col3…
Aus table_name1
Wo existiert (wählen Sie 1 aus
AUS
TABLE_NAME2
Wo col1 = table_name1.col1);

Erstellen Sie drei benannte Tabellen Firma, Artikel Und Kunden und einige Daten einfügen. Führen Sie die folgende Auswahlabfrage aus, um den Inhalt dieser Tabellen anzuzeigen.

Aus der Firma auswählen;
Aus Elementen auswählen;
Wählen Sie * von Kunden aus;

Beispiel-1: Verwenden von existierenden Klausel in der Auswahlabfrage

(a) existiert

In der folgenden Abfrage werden Datensätze abgerufen Artikel Tabelle basierend auf Unternehmen Tisch. Die Unterabfrage sucht alle Datensätze von Unternehmen Tisch wo company_id von Unternehmen Tabelle ist gleich company_id von Artikel Tabelle und der Wert von Telefon Feld ist nicht leer. Es gibt einen Rekord in Unternehmen Tabelle, die keine Telefonnummer hat und dieser Datensatz wird aus der Ausgabe weggelassen.

Wählen Sie item_id, Name, Menge
Von Gegenständen
Wo existiert (wählen Sie 1 aus
Von der Gesellschaft
Wo Gegenstände.company_id = company.Firma_ID und Unternehmen.Telefon");

Ausgang:

Die Aufzeichnung von LG hat keinen Telefoneintrag in der Firma -Tabelle. Es wird also nicht in der Ausgabe erscheinen.

(b) nicht existiert

Es gibt keine existierende Klausel vorhanden von existierenden Klausel. Die folgende Abfrage holt diese Datensätze ab Artikel Tabelle Wenn die Unterabfrage falsch zurückgibt.

Wählen Sie item_id, Name, Menge
Von Gegenständen
Wo nicht existiert (wählen Sie 1 aus
Von der Gesellschaft
Wo Gegenstände.company_id = company.Firma_ID und Unternehmen.Website_url ist null);

Ausgang:

Es gibt keine Aufzeichnungen in Unternehmen Tisch wo Webadresse ist Null. Die Ausgabe der Unterabfrage ist also für alle Datensätze falsch und alle Datensätze der Element -Tabelle werden abgerufen.

Beispiel-2: Verwenden von existierenden Klausel in Insert-Abfrage

Gemäß den folgenden Abfragen werden die Daten in eingefügt Artikel Tabelle wann company_id von beiden Unternehmen Und Kunden Tabellen sind gleich.

In Elemente einfügen
(Company_id)
Wählen Sie Company_ID
Von Kunden
Wo existiert (wählen Sie 1 aus
Von Unternehmen, Kunden
Wo Kunden.company_id = company.company_id);

Ausgang:

Es gibt drei Einträge für company_id In Kundentabellen mit Werten sind die Werte 1 Und 2. Die Unterabfrage wird also dreimal true und drei Datensätze werden eingefügt.

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

Beispiel-3: Verwenden existieren Klausel in der Update-Abfrage

Die folgende Abfrage aktualisiert die Datensätze von Artikel Tisch wo company_id ist 1 und die Unterabfrage kehrt wahr zurück.

Elemente aktualisieren
Setzen Sie Name = "Nokia"
Wobei Company_id = 1 existiert (wählen Sie 1 aus
Von Gegenständen
Wo name = "nicht zuweisen");

Ausgang:

Hier kehrt die Unterabfrage dreimal und dreimal zurück und kehrt er company_id ist 1 für drei Datensätze. Nach Ausführung der Update -Abfrage werden drei Datensätze aktualisiert.

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

Beispiel-4: Verwenden existieren Klausel in Löschen von Abfragen

Die folgende Abfrage löscht diese Datensätze von Artikel Tisch wo company_id ist 1 und die Unterabfrage kehrt wahr zurück.

Aus Elementen löschen
Wobei Company_id = 1 existiert (wählen Sie 1 aus
Von Gegenständen
Wo name = "nicht zuweisen");

Ausgang:

Es gibt drei Datensätze mit Wert 1 von company_id und ein Datensatz hat den Namenswert "Nicht zuweisen". Die Bedingung gilt also dreimal und löscht drei Datensätze von Artikel Tisch.

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

Hoffe, Sie haben eine klare Vorstellung von der Verwendung von existierenden Klausel in SQL -Abfrage, nachdem Sie dieses Tutorial gelesen haben.