


Was ist eine MySQL-Unterabfrage? Wie filtere ich mithilfe einer Unterabfrage?
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';
Ausgabe:
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);
Ausgabe:
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');
Ausgabe:
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';
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);
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);
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'));
Ausgabe:
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]
MySQL erstellt berechnete Felder und verwendet Unterabfragen
Was sind Joins und relationale Tabellen in MySQL?
Warum Joins verwenden und wie man Joins erstellt
-
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!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

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

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





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 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.

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.

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

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.

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.

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

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.
