MySQL SubQuery-Tutorial mit Beispielen

Was sind Unterabfragen?

Eine Unterabfrage ist eine Auswahlabfrage, die in einer anderen Abfrage enthalten ist. Die innere Auswahlabfrage wird normalerweise verwendet, um die Ergebnisse der äußeren Auswahlabfrage zu ermitteln.

Schauen wir uns die Syntax der Unterabfrage an –

MySQL Unterabfrage

Eine häufige Kundenbeschwerde bei der MyFlix-Videobibliothek ist die geringe Anzahl an Filmtiteln. Das Management möchte Filme für eine Kategorie kaufen, die die geringste Anzahl an Titeln aufweist.

Sie können eine Abfrage wie verwenden

SELECT category_name FROM categories WHERE category_id =( SELECT MIN(category_id) from movies);

Es gibt ein Ergebnis

MySQL Unterabfrage

Sehen wir uns an, wie diese Abfrage funktioniert

MySQL Unterabfrage

Das Obige ist eine Form von Zeilenunterabfrage. In solchen Unterabfragen kann die innere Abfrage nur EIN Ergebnis liefern. Das Erlaubte operaToren bei der Arbeit mit Zeilenunterabfragen sind [=, >, =, <=, ,!=, ]

Schauen wir uns ein anderes Beispiel an:

Angenommen, Sie möchten Namen und Telefon numbers von Mitgliedern von Personen, die einen Film ausgeliehen haben und ihn noch nicht zurückgeben müssen. Sobald Sie Namen und Telefonnummer erhalten haben, rufen Sie sie an, um eine Erinnerung zu senden. Sie können eine Abfrage wie verwenden

SELECT full_names,contact_number FROM   members  WHERE  membership_number IN (SELECT membership_number FROM movierentals WHERE return_date IS NULL );


MySQL Unterabfrage

Sehen wir uns an, wie diese Abfrage funktioniert

MySQL Unterabfrage

In diesem Fall gibt die innere Abfrage mehr als ein Ergebnis zurück. Das Obige ist Typ Tfähiger Unterabfragey.

Bisher haben wir zwei Abfragen gesehen, sehen wir uns nun ein Beispiel dafür an Dreifache Abfrage!!!

Angenommen, das Management möchte das bestbezahlte Mitglied belohnen.

Wir können eine Abfrage ausführen wie

Select full_names From members WHERE membership_number = (SELECT membership_number FROM payments WHERE amount_paid = (SELECT MAX(amount_paid) FROM payments));

Die obige Abfrage ergibt Folgendeswing Ergebnis -

MySQL Unterabfrage

Unterabfragen vs. Joins!

Im Vergleich zu Joins sind Unterabfragen einfach zu verwenden und leicht zu lesen. Sie sind nicht so kompliziert wie Joins

Daher werden sie häufig von verwendet SQL-Anfänger.

Unterabfragen weisen jedoch Leistungsprobleme auf. Die Verwendung eines Joins anstelle einer Unterabfrage kann manchmal zu einer bis zu 500-fachen Leistungssteigerung führen.

Wenn Sie die Wahl haben, wird empfohlen, einen JOIN für eine Unterabfrage zu verwenden.


Unterabfragen sollten nur als Fallback-Lösung verwendet werden, wenn Sie keinen JOIN verwenden können operation, um das oben Gesagte zu erreichen

Unterabfragen vs. Joins

Zusammenfassung

  • Unterabfragen sind eingebettete Abfragen innerhalb einer anderen Abfrage. Die eingebettete Abfrage wird als innere Abfrage und die Containerabfrage als äußere Abfrage bezeichnet.
  • Unterabfragen sind einfach zu verwenden, bieten große Flexibilität und können leicht in einzelne logische Komponenten zerlegt werden, aus denen die Abfrage besteht, was sehr nützlich ist, wenn Testen und Debuggen der Abfragen.
  • MySQL unterstützt drei Arten von Unterabfragen: Skalar-, Zeilen- und Tabellenunterabfragen.
  • Skalare Unterabfragen geben nur eine einzelne Zeile und eine einzelne Spalte zurück.
  • Zeilenunterabfragen geben nur eine einzelne Zeile zurück, können aber mehr als eine Spalte haben.
  • Tabellenunterabfragen können sowohl mehrere Zeilen als auch Spalten zurückgeben.
  • Unterabfragen können auch in INSERT-, UPDATE- und DELETE-Abfragen verwendet werden.
  • Bei Leistungsproblemen, wenn es darum geht, Daten aus mehreren Tabellen abzurufen, ist es stronEs wird dringend empfohlen, JOINs anstelle von Unterabfragen zu verwenden. Unterabfragen sollten nur aus gutem Grund verwendet werden.