Heim Datenbank MySQL-Tutorial Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?

Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?

May 10, 2017 pm 01:25 PM
过滤

Unterabfrage

MySQL 4.1 führte Unterstützung für Unterabfragen ein. Um das in diesem Kapitel beschriebene SQL verwenden zu können, müssen Sie MySQL 4.1 oder höher verwenden.

SELECT-Anweisung ist eine SQL-Abfrage. Alle SELECT-Anweisungen, die wir bisher gesehen haben, waren einfache Abfragen, also einzelne Anweisungen, die Daten aus einer einzelnen Datenbanktabelle abrufen.

Abfrage Jede SQL-Anweisung ist eine Abfrage. Allerdings bezieht sich dieser Begriff im Allgemeinen auf die SELECT-Anweisung.

SQL ermöglicht auch die Erstellung von Unterabfragen, d. h. Abfragen , die in anderen Abfragen verschachtelt sind. Warum machen wir das? Der beste Weg, dieses Konzept zu verstehen, besteht darin, einige Beispiele zu untersuchen.

Verwenden Sie Unterabfragen zum Filtern

Die in allen Kapiteln dieses Buches verwendeten Datenbanktabellen sind relationale Tabellen (eine Beschreibung der einzelnen Tabellen und Beziehungen finden Sie in Anhang B). . Bestellungen werden in zwei Tabellen gespeichert. In der Bestelltabelle wird für jede Bestellung eine Zeile gespeichert, die die Bestellnummer, die Kunden-ID und das Bestelldatum enthält. Artikel für jede Bestellung werden in der zugehörigen Orderitems-Tabelle gespeichert. In der Bestelltabelle werden keine Kundeninformationen gespeichert. Es speichert lediglich die ID des Kunden. Die tatsächlichen Kundeninformationen werden in der Kundentabelle gespeichert. Wenn Sie nun alle Kunden auflisten müssen, die Artikel TNT2 bestellt haben, wie sollten Sie ihn dann abrufen? Spezifische Schritte sind unten aufgeführt.

(1) Rufen Sie die Nummern aller Bestellungen ab, die Artikel TNT2 enthalten.

(2) Rufen Sie die IDs aller Kunden mit der im vorherigen Schritt aufgeführten Bestellnummer ab.

(3) Rufen Sie die Kundeninformationen aller im vorherigen Schritt zurückgegebenen Kunden-IDs ab.

Jeder der oben genannten Schritte kann als separate Abfrage ausgeführt werden. Die von einer SELECT-Anweisung zurückgegebenen Ergebnisse können in der WHERE-Klausel einer anderen SELECT-Anweisung verwendet werden.

Sie können Unterabfragen auch verwenden, um drei Abfragen in einer Anweisung zu kombinieren.

Die erste SELECT-Anweisung ist klar, sie ruft für alle Bestellartikel mit der prod_id TNT2 deren Spalte „order_num“ ab. Die Ausgabe listet zwei Bestellungen auf, die diesen Artikel enthalten:

Eingabe:

select order_num from orderitems where prod_id = 'TNT2';
Nach dem Login kopieren

Ausgabe:

Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?

Als Nächstes enthält die Abfrage die Kunden-ID für Bestellungen 20005 und 20007. Schreiben Sie unter Verwendung der IN-Klausel die folgende SELECT-Anweisung:

Eingabe:

select cust_id from orders where order_num in (20005,20007);
Nach dem Login kopieren
Nach dem Login kopieren

Ausgabe:

Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?

Geben Sie nun die erste ein Die Abfrage (diejenige, die die Bestellnummer zurückgibt) wird zu einer Unterabfrage, die die beiden Abfragen kombiniert. Bitte schauen Sie sich die folgende SELECT-Anweisung an:

Eingabe:

select cust_id from orders where order_num in (select order_num from orderitems where prod_id = 'TNT2');
Nach dem Login kopieren

Ausgabe:

Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?

Analyse: In der SELECT-Anweisung wird die Unterabfrage Gehen Sie immer von innen nach außen vor. Bei der Verarbeitung der obigen SELECT-Anweisung führt MySQL tatsächlich zwei Vorgänge aus.

Zuerst wird die folgende Abfrage ausgeführt:

select order_num from orderitems where prod_id = 'TNT2';
Nach dem Login kopieren

Diese Abfrage gibt zwei Bestellnummern zurück: 20005 und 20007. Diese beiden Werte werden dann in dem vom IN-Operator geforderten kommagetrennten Format an die WHERE-Klausel der äußeren Abfrage übergeben. Die äußere Abfrage lautet:

select cust_id from orders where order_num in (20005,20007);
Nach dem Login kopieren
Nach dem Login kopieren

Wie Sie sehen können, ist die Ausgabe korrekt und mit dem von der vorherigen hartcodierten WHERE-Klausel zurückgegebenen Wert identisch.

Formatierte SQL-SELECT-Anweisungen, die Unterabfragen enthalten, können schwierig zu lesen und zu debuggen sein, insbesondere wenn sie komplex sind. Das Aufteilen der Unterabfrage in mehrere Zeilen und das entsprechende Einrücken wie oben gezeigt kann die Verwendung von Unterabfragen erheblich vereinfachen.

Jetzt wurden die IDs aller Kunden angezeigt, die Artikel TNT2 bestellt haben. Der nächste Schritt besteht darin, die Kundeninformationen für diese Kunden-IDs abzurufen. Die SQL-Anweisung zum Abrufen von zwei Spalten lautet:

Eingabe:

select cust_name,cust_contact from customers where cust_id in (10001,10004);
Nach dem Login kopieren

Sie können die WHERE-Klausel in eine Unterabfrage konvertieren, anstatt diese Kunden-IDs fest zu codieren:

Eingabe:

select cust_name,cust_contact from customers where cust_id in(select cust_id from orders where order_num in(select order_num from orderitems where prod_id = 'TNT2'));
Nach dem Login kopieren

Ausgabe:

Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?

Analyse: Um die obige SELECT-Anweisung auszuführen, muss MySQL tatsächlich 3 SELECT-Anweisungen ausführen. Die innerste Unterabfrage gibt eine Liste von Bestellnummern zurück, die in der WHERE-Klausel ihrer äußeren Unterabfrage verwendet wird. Die äußere Unterabfrage gibt die Liste der Kunden-IDs zurück, die in der WHERE-Klausel der äußersten Abfrage verwendet werden. Die äußerste Abfrage gibt die erforderlichen Daten zurück.

Es ist ersichtlich, dass durch die Verwendung von Unterabfragen in der WHERE-Klausel leistungsstarke und flexible SQL-Anweisungen geschrieben werden können. Es gibt keine Begrenzung für die Anzahl der verschachtelten Unterabfragen. Bei der tatsächlichen Verwendung können jedoch aufgrund von Leistungseinschränkungen nicht zu viele Unterabfragen verschachtelt werden.

Spalten müssen übereinstimmen. Wenn Sie eine Unterabfrage in einer WHERE-Klausel verwenden (wie hier gezeigt), sollten Sie sicherstellen, dass die SELECT-Anweisung die gleiche Anzahl von Spalten wie in der WHERE-Klausel hat. Normalerweise gibt eine Unterabfrage eine einzelne Spalte zurück und stimmt sie überein, bei Bedarf können jedoch auch mehrere Spalten verwendet werden.

Obwohl Unterabfragen normalerweise in Verbindung mit dem IN-Operator verwendet werden, können sie auch zum Testen auf Gleichheit ( = ), Ungleichheit ( ) usw. verwendet werden.

Unterabfrage und Leistung Der hier angegebene Code funktioniert und liefert die gewünschten Ergebnisse. Die Verwendung von Unterabfragen ist jedoch nicht immer die effizienteste Methode zur Durchführung dieser Art des Datenabrufs. Weitere Informationen finden Sie in Kapitel 15, wo dieses Beispiel noch einmal aufgeführt wird.

[Verwandte Empfehlungen]

  1. MySQL erstellt berechnete Felder und verwendet Unterabfragen

  2. Was sind Joins und relationale Tabellen in MySQL?

  3. Warum Joins verwenden und wie man Joins erstellt

  4. Die Bedeutung der WHERE-Klausel in MySQL und wie man mehrere Tabellen verknüpft

Das obige ist der detaillierte Inhalt vonWas ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie man phpmyadmin öffnet Wie man phpmyadmin öffnet Apr 10, 2025 pm 10:51 PM

Sie können PhpMyAdmin in den folgenden Schritten öffnen: 1. Melden Sie sich beim Website -Bedienfeld an; 2. Finden und klicken Sie auf das Symbol phpmyadmin. 3. Geben Sie MySQL -Anmeldeinformationen ein; 4. Klicken Sie auf "Login".

MySQL: Eine Einführung in die beliebteste Datenbank der Welt MySQL: Eine Einführung in die beliebteste Datenbank der Welt Apr 12, 2025 am 12:18 AM

MySQL ist ein Open Source Relational Database Management -System, das hauptsächlich zum schnellen und zuverlässigen Speicher und Abrufen von Daten verwendet wird. Sein Arbeitsprinzip umfasst Kundenanfragen, Abfragebedingungen, Ausführung von Abfragen und Rückgabergebnissen. Beispiele für die Nutzung sind das Erstellen von Tabellen, das Einsetzen und Abfragen von Daten sowie erweiterte Funktionen wie Join -Operationen. Häufige Fehler umfassen SQL -Syntax, Datentypen und Berechtigungen sowie Optimierungsvorschläge umfassen die Verwendung von Indizes, optimierte Abfragen und die Partitionierung von Tabellen.

So verwenden Sie ein einzelnes Gewinde -Redis So verwenden Sie ein einzelnes Gewinde -Redis Apr 10, 2025 pm 07:12 PM

Redis verwendet eine einzelne Gewindearchitektur, um hohe Leistung, Einfachheit und Konsistenz zu bieten. Es wird E/A-Multiplexing, Ereignisschleifen, nicht blockierende E/A und gemeinsame Speicher verwendet, um die Parallelität zu verbessern, jedoch mit Einschränkungen von Gleichzeitbeschränkungen, einem einzelnen Ausfallpunkt und ungeeigneter Schreib-intensiver Workloads.

Mysqls Platz: Datenbanken und Programmierung Mysqls Platz: Datenbanken und Programmierung Apr 13, 2025 am 12:18 AM

Die Position von MySQL in Datenbanken und Programmierung ist sehr wichtig. Es handelt sich um ein Open -Source -Verwaltungssystem für relationale Datenbankverwaltung, das in verschiedenen Anwendungsszenarien häufig verwendet wird. 1) MySQL bietet effiziente Datenspeicher-, Organisations- und Abruffunktionen und unterstützt Systeme für Web-, Mobil- und Unternehmensebene. 2) Es verwendet eine Client-Server-Architektur, unterstützt mehrere Speichermotoren und Indexoptimierung. 3) Zu den grundlegenden Verwendungen gehören das Erstellen von Tabellen und das Einfügen von Daten, und erweiterte Verwendungen beinhalten Multi-Table-Verknüpfungen und komplexe Abfragen. 4) Häufig gestellte Fragen wie SQL -Syntaxfehler und Leistungsprobleme können durch den Befehl erklären und langsam abfragen. 5) Die Leistungsoptimierungsmethoden umfassen die rationale Verwendung von Indizes, eine optimierte Abfrage und die Verwendung von Caches. Zu den Best Practices gehört die Verwendung von Transaktionen und vorbereiteten Staten

Warum MySQL verwenden? Vorteile und Vorteile Warum MySQL verwenden? Vorteile und Vorteile Apr 12, 2025 am 12:17 AM

MySQL wird für seine Leistung, Zuverlässigkeit, Benutzerfreundlichkeit und Unterstützung der Gemeinschaft ausgewählt. 1.MYSQL bietet effiziente Datenspeicher- und Abruffunktionen, die mehrere Datentypen und erweiterte Abfragevorgänge unterstützen. 2. Übernehmen Sie die Architektur der Client-Server und mehrere Speichermotoren, um die Transaktion und die Abfrageoptimierung zu unterstützen. 3. Einfach zu bedienend unterstützt eine Vielzahl von Betriebssystemen und Programmiersprachen. V.

So stellen Sie eine Verbindung zur Datenbank von Apache her So stellen Sie eine Verbindung zur Datenbank von Apache her Apr 13, 2025 pm 01:03 PM

Apache verbindet eine Verbindung zu einer Datenbank erfordert die folgenden Schritte: Installieren Sie den Datenbanktreiber. Konfigurieren Sie die Datei web.xml, um einen Verbindungspool zu erstellen. Erstellen Sie eine JDBC -Datenquelle und geben Sie die Verbindungseinstellungen an. Verwenden Sie die JDBC -API, um über den Java -Code auf die Datenbank zuzugreifen, einschließlich Verbindungen, Erstellen von Anweisungen, Bindungsparametern, Ausführung von Abfragen oder Aktualisierungen und Verarbeitungsergebnissen.

So starten Sie MySQL von Docker So starten Sie MySQL von Docker Apr 15, 2025 pm 12:09 PM

Der Prozess des Startens von MySQL in Docker besteht aus den folgenden Schritten: Ziehen Sie das MySQL -Image zum Erstellen und Starten des Containers an, setzen

CentOS installieren MySQL CentOS installieren MySQL Apr 14, 2025 pm 08:09 PM

Die Installation von MySQL auf CentOS umfasst die folgenden Schritte: Hinzufügen der entsprechenden MySQL Yum -Quelle. Führen Sie den Befehl mySQL-server aus, um den MySQL-Server zu installieren. Verwenden Sie den Befehl mySQL_SECURE_INSTALLATION, um Sicherheitseinstellungen vorzunehmen, z. B. das Festlegen des Stammbenutzerkennworts. Passen Sie die MySQL -Konfigurationsdatei nach Bedarf an. Tune MySQL -Parameter und optimieren Sie Datenbanken für die Leistung.

See all articles