Die Ausführungsreihenfolge der SQL-Abfrageanweisungen lautet wie folgt: (7) AUSWÄHLEN (8) DISTINCT <Auswahlliste> (1) FROM <linke_Tabelle> (3) <join_type> JOIN <rechte_Tabelle> (2) ON <Beitrittsbedingung> (4) WHERE <Wo_Bedingung> (5) GRUPPE NACH <Gruppenliste> (6) HAVING <Haben_Bedingung> (9) ORDER BY <order_by_condition> (10) LIMIT <Grenzwert> Vorbereitende Maßnahmen 1. Erstellen Sie eine neue Testdatenbank Datenbanktestdaten erstellen; 2. Erstellen Sie eine Testtabelle und fügen Sie Daten wie folgt ein: Benutzertabelle Bestellformular Vorbereiten von Testanweisungen für logische SQL-Abfragen Wählen Sie a.user_id,COUNT(b.order_id) als total_orders FROM Benutzer als LEFT JOIN-Aufträge als b EIN a.Benutzer-ID = b.Benutzer-ID WO a.city = "Peking" GROUP BY a.Benutzer-ID HAVING COUNT(b.Bestell-ID) < 2 ORDER BY total_orders desc Verwenden Sie die obige SQL-Abfrage, um Kunden aus Peking zu erhalten, die weniger als 2 Bestellungen haben; Während der Ausführung dieser SQL-Anweisungen wird eine virtuelle Tabelle generiert, um die Ausführungsergebnisse der SQL-Anweisungen zu speichern. 1. Führen Sie die FROM-Anweisung aus Der erste Schritt besteht darin, die Nachdem die FROM-Anweisung ein kartesisches Produkt auf den beiden Tabellen ausgeführt hat, wird eine virtuelle Tabelle, VT1 (virtuelle Tabelle 1), mit folgendem Inhalt erhalten: Es gibt insgesamt 28 (Anzahl der Benutzerdatensätze * Anzahl der Bestelldatensätze) Datensätze. Dies ist das Ergebnis von VT1. Die folgenden Operationen basieren auf VT1. 2. ON-Filterung durchführen Nach der Ausführung des kartesischen Produkts wird dann Wählen Sie * vom Benutzer als inneren JOIN-Auftrag als b ON a.user_id = b.user_id; 3. Externe Zeilen hinzufügen Dieser Schritt wird nur ausgeführt, wenn der Verknüpfungstyp
Da ich in der vorbereiteten Test-SQL-Abfragelogikanweisung LEFT JOIN verwendet habe, sieht die resultierende VT3-Tabelle wie folgt aus: 4. Führen Sie die Where-Bedingungsfilterung aus Die Daten mit den hinzugefügten externen Zeilen werden durch die Where-Bedingung gefiltert. Nur die Datensätze, die die Bedingung <where_condition> erfüllen, werden herausgefiltert. Führen Sie WHERE a.city = 'beijing' aus, um VT4 wie folgt zu erhalten: Allerdings müssen bei der Verwendung der WHERE-Klausel folgende zwei Punkte beachtet werden: 1. Da die Daten noch nicht gruppiert wurden, können Sie where_condition=MIN(col) nicht in der Where-Filterbedingung verwenden, um Gruppenstatistiken zu filtern. 2. Da die Spaltenauswahloperation nicht durchgeführt wurde, ist die Verwendung von Spaltenaliasen in der Auswahl ebenfalls nicht zulässig. Wählen Sie beispielsweise „Stadt als c“ aus Tabelle1 aus, wobei c=„Peking“ nicht zulässig ist. 5. Führen Sie die Group-By-Anweisung aus 6. Durchführung von Die 7. Liste auswählen Die Wir führen 8. Führen Sie distinct aus, um Daten zu deduplizieren Wenn in der Abfrage die 9. Führen Sie den Auftrag per Klausel aus Sortieren Sie den Inhalt der virtuellen Tabelle VT7 nach der angegebenen Spalte und geben Sie dann eine neue virtuelle Tabelle zurück. Wir führen DESC sortiert absteigend, ASC sortiert aufsteigend 10. Führen Sie die Limit-Anweisung aus Die LIMIT-Klausel wählt die angegebenen Zeilendaten beginnend an der angegebenen Position aus der im vorherigen Schritt erhaltenen virtuellen Tabelle aus, die häufig zum Paginieren verwendet wird. LIMIT der MySQL-Datenbank unterstützt die folgenden Optionen: limit n,m Gibt an, dass m Datensätze ausgewählt werden, beginnend mit dem n-ten Datensatz. Bei kleinen Datenmengen ist die Verwendung der LIMIT-Klausel kein Problem. Bei sehr großen Datenmengen ist die Verwendung von LIMIT n, m jedoch sehr ineffizient. Da der LIMIT-Mechanismus jedes Mal von Anfang an scannt, müssen Sie, wenn Sie 3 Daten ab der 600.000. Zeile lesen müssen, zuerst bis zur 600.000. Zeile scannen und diese dann lesen. Der Scanvorgang ist ein sehr ineffizienter Prozess. Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird. Das könnte Sie auch interessieren:
|
<<: Detaillierte Erklärung des Prinzips der Docker-Image-Schichtung
>>: Beispiel für die Verwendung von rem zum Ersetzen von px in einem Vue-Projekt
1. Um die MySQL-Datenbank herunterzuladen, besuch...
In diesem Artikelbeispiel wird der spezifische Co...
Dieser Artikel stellt kurz den Prozess der Einric...
Inhaltsverzeichnis 1. Szenenlayout 2. Fügen Sie e...
1. Einfache Konfiguration der dynamischen und sta...
1 Herunterladen Die Adresse lautet: https://dev.m...
Das Internet ist bereits voll von Artikeln dieser...
Alle Voraussetzungen erfordern Root-Berechtigunge...
einführen HTML stellt die kontextuelle Struktur u...
Union ist eine Vereinigungsoperation für die Date...
JSON-Daten werden auf der HTML-Seite angezeigt un...
MySQL führt SQL durch den Prozess der SQL-Analyse...
systemd: Das Service-Systemctl-Skript von CentOS ...
Tabellenfelder hinzufügen alter table table1 add ...
1. Fehlerdetails Als ich einmal manuell eine voll...