SQL-Abfragen sind das Fleisch und die Kartoffeln von RDBMS CRUD (erstellen, lesen, aktualisieren, löschen). Aber wenn Ihre Anwendung oder Unternehmensdatenbank wächst, werden intelligente Abfragen zum Abrufen bedingter, anforderungsspezifischer Daten zu einem Muss.

SQL ist relativ umfassend und umfasst viele Funktionalitäten, von denen jede für verschiedene geschäftliche Zwecke gut geeignet ist. Eine solche Funktionalität umfasst die Verwendung von Unterabfragen.

Um Ihre Codes effizient und effektiv zu gestalten, können Sie Unterabfragen in Ihren SQL-Codes verwenden, um Daten abzurufen, vorhandene Variablen zu manipulieren und mehrere Ziele auf einmal zu erreichen.

Was sind SQL-Unterabfragen?

Eine Unterabfrage ist eine verschachtelte Abfrage, die als Parameter innerhalb einer anderen Hauptabfrage fungiert. Die Unterabfrage ist eine innere Frage, während die Hauptabfrage die ist äußere Abfrage.

Die Unterabfrage gibt die Daten angeblich als Argument in Klammern für die Hauptabfrage zurück, während die Hauptabfrage das Endergebnis weiter abruft.

instagram viewer

Unterabfragen werden in die eingebettet Wählen Erklärung oder in der Wo Klausel. Eine solche Struktur ermöglicht es der Unterabfrage, sich wie eine gut beschriebene Datenfilterungsbedingung zu verhalten. Leider können Unterabfragen nur die verwenden Gruppiere nach Befehle und nicht Sortieren nach Kommandos, da diese nur in der Hauptabfrage erlaubt sind.

Verwandt: Alles, was Sie über die SQL GROUP BY-Anweisung wissen müssen

Normalerweise besteht jede Unterabfrage aus einer einzelnen Spalte mit der Wählen Klausel. Es gibt jedoch Szenarien, in denen die Hauptabfrage mehrere Spalten hat. Eine Unterabfrage kann in einer anderen Unterabfrage verschachtelt werden, wodurch sie zu einer verschachtelten Unterabfrage wird.

Die Strenge einer Unterabfrage lautet wie folgt:

Wählen Sie Spaltenname aus der Tabelle aus, wobei Bedingung= 
(SELECT conditional_column FROM table) als Alias;

Angenommen, Sie haben die folgende Tabelle:

ICH WÜRDE Vorname Zweitname Agenturgebühr
1 John Docht 5000
2 Robert Graham 4000
3 Stefan Hicks 8000
4 Bob Marley 1000
5 Maria Ellen 9000

Um in dieser Tabelle die Namen von Personen abzurufen, die über der durchschnittlichen Agenturgebühr verdienen, können Sie eine Unterabfrage schreiben, anstatt mehrere Codezeilen zu schreiben.

Verwandt: So erstellen Sie eine Tabelle in SQL

So sieht die Abfrage aus:

Wählen Sie * aus agent_details aus
where Agency_Fee > (wählen Sie avg (Agency_Fee) aus agent_details);

Der Befehl vor dem > Zeichen ist die äußere Abfrage, während alles nach dem > Zeichen ist die innere Abfrage.

Die innere Abfrage berechnet die durchschnittliche Agenturgebühr innerhalb der Unterabfrage, und die äußere Abfrage zeigt alle Werte an, die größer als der berechnete Durchschnittswert sind.

Wie verwendet man Unterabfragen in SQL?

Es gibt verschiedene Möglichkeiten, Unterabfragen in SQL zu verwenden.

Unterabfragen mit Where-Klausel

Eine der grundlegendsten Strukturen einer Unterabfrage in SQL befindet sich in der Where-Klausel. Es ist der einfachste Weg, um zu definieren, wonach Sie suchen. Die Select-Anweisung gibt Werte gemäß der Unterabfragebedingung(en) zurück und verwendet sie als Parameter für die Hauptabfrage.

Abfragestruktur:

select * from table_name
where column_name = (select column_name from table_name);

Lassen Sie uns dies anhand eines Beispiels erläutern.

Angenommen, Sie möchten die zweithöchste Agenturgebühr aus der Tabelle agency_details ermitteln. Dazu gibt es innerhalb von SQL alternative Funktionen; Die beste Methode ist jedoch die Verwendung einer Unterabfrage.

So können Sie die Unterabfrage definieren:

select *, max (Agenturgebühr)
von agent_details
wobei Agency_fee < (wählen Sie max (Agency_fee) aus agent_details aus);

Die resultierende Aussage wird es Ihnen zeigen 8000, was die zweithöchste Gebühr in der angegebenen Tabelle ist. Wenn die Abfrage ausgeführt wird, berechnet die Unterabfrage den Höchstwert aus der Gebührenliste. Der höchste Gebührenbetrag (9000) wird gespeichert.

Sobald dieser Teil berechnet ist, wird der zweite Teil der Abfrage berechnet, der die zweithöchste Gebühr aus der Tabelle findet (seit dem < Zeichen verwendet wird). Das Endergebnis ist 8000, das ist die zweithöchste Gebühr in der Tabelle.

Unterabfragen innerhalb der From-Klausel

Eine weitere Variation innerhalb von Unterabfragen ist das Übergeben der Bedingung in der von Klausel. Als ähnliches Konzept wird zuerst die innere Abfrage verarbeitet und danach die äußere Abfrage. Die innere Abfrage filtert nach den Daten und zeigt Ergebnisse mit ID = 3 an.

Hier ist die Abfrage als Referenz:

wählen Sie a.* aus (
Wählen Sie agency_fee aus agent_details aus
wobei ID= 3) als a;

Dies ist eine sehr grundlegende Struktur; Je komplexer Ihre Datentabellen sind, desto mehr Datenzeilen erhalten Sie jedoch, die Ihren Bedingungen entsprechen.

Verwenden von Unterabfragen mit Insert In-Anweisung

Wenn Sie eine vorhandene Tabelle mit einigen neuen Datenzeilen aktualisieren möchten, können Sie die verwenden Einfügen in Erklärung. Eine Unterabfrage kann sich als sehr nützlich erweisen, wenn Sie Werte basierend auf einer bestimmten Bedingung (en) hinzufügen möchten.

Abfragestruktur:

einfügen in Tabellenname 
select * from table_name
wobei Spaltenname = Bedingungen;
select * from table_name;

Hier ist ein Beispiel dafür, wie Sie die insert into-Anweisung mit der Unterabfrage verwenden können:

einfügen in agent_details
wählen Sie * aus agent_details
wo Agentur_Gebühr in (1000, 5000);
select * from agent_details;

Sobald die Abfrage ausgeführt wird, werden die Werte, die der Bedingung entsprechen, erneut in die vorhandene Tabelle eingefügt. Der wählen * reference nimmt alle Spalten zusammen auf und fügt sie unverändert in die Tabelle agent_details ein. Der in -Anweisung wird verwendet, um mehrere Filterbedingungen gleichzeitig zu definieren.

Verwenden von Unterabfragen mit Update-Anweisung

Es gibt Situationen, in denen Sie die zugrunde liegenden Tabellen aktualisieren möchten, während Sie die Abfragen ausführen. Dazu können Sie die verwenden aktualisieren -Anweisung zusammen mit den Abfragebefehlen.

So schreiben Sie die Unterabfrage, um die Informationen in der Tabelle in einer Instanz zu aktualisieren:

Tabellenname aktualisieren 
set Spaltenname = neuer_Wert
wobei Spaltenname =
(Spaltenname aus Tabellenname auswählen, wobei = );

Hier ist ein Beispiel, das die Verwendung der Update-Anweisung demonstriert:

Agentendetails aktualisieren 
SET Agenturgebühr = 35000
WO Agenturgebühr =
(SELECT agency_fee FROM agent_details WHERE First_name='John');
select * from agent_details;

Die Unterabfrage filtert nach der Spalte agency_fee und wählt die Zeile(n) aus, in denen First_Name übereinstimmt John. Als nächstes wird die äußere Abfrage ausgeführt, wobei die Vermittlungsgebühr für John Wick auf 35000 aktualisiert wird.

Sie können eine passieren wählen * Erklärung zur Überprüfung der Endergebnisse; Sie werden feststellen, dass die Agenturgebühr für John Wick auf 35000 aktualisiert wurde, da es nur eine Instanz gibt, die den in der Abfrage definierten Bedingungen entspricht.

Verwenden von Unterabfragen mit Delete-Anweisung

Genau wie die Update-Anweisung, bei der Sie die Datenzeilen in einer vorhandenen Tabelle aktualisieren, wird die löschen -Anweisung löscht Datenzeile(n) basierend auf einer Bedingung.

Die Struktur der Löschanweisung ist:

aus Tabellenname löschen, wobei Variablen-/Spaltenname = 
(Spaltenname aus Tabellenname auswählen, wobei = Bedingung);

Hier ist ein Beispiel:

Aus agent_details löschen 
wo Vorname IN
(wählen Sie First_name aus agent_details, wobei agency_fee = 9000 ist);
select * from agent_details;

Verwenden von Unterabfragen in SQL

Unterabfragen sind ein hervorragendes Feature in SQL, das Ihnen das Schreiben endloser Zeilen unnötigen Codes ersparen kann. Wenn Sie in der Lage sind, Ihre Gebote mit den grundlegenden Funktionalitäten von Unterabfragen abzugeben, möchten Sie sich keine Gedanken über die Komplexität der SQL-Codierung machen.

Es ist immer am besten, Ihr vorhandenes SQL-Wissen zu erweitern, um sicherzustellen, dass Sie immer auf dem neuesten Stand sind. Seien Sie versichert, SQL-Spickzettel können Ihnen auf einen Blick eine gute Vorstellung davon geben, wie Sie Ihre Grundlagen auffrischen können.

Der Spickzettel für grundlegende SQL-Befehle für Anfänger

Möchten Sie mehr über SQL erfahren? Die verschiedenen SQL-Abfragebefehle im Griff zu haben, ist eine großartige Möglichkeit, um voranzukommen.

Lesen Sie weiter

TeilenTwitternEmail
Verwandte Themen
  • Programmierung
  • Programmierung
  • SQL
  • Programmierwerkzeuge
Über den Autor
Gaurav Siyal (35 veröffentlichte Artikel)

Gaurav Siyal hat zwei Jahre Erfahrung als Autor und hat für eine Reihe von Unternehmen für digitales Marketing und Software-Lebenszyklusdokumente geschrieben.

Mehr von Gaurav Siyal

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich anzumelden