MIT als Grammatik
MIT als Grammatik ist hauptsächlich in die folgenden zwei Teile unterteilt :
1) WITH: Schlüsselwort, das zum Einführen einer oder mehrerer temporärer Tabellen verwendet wird.
2) AS: Schlüsselwort, das zum Definieren einer oder mehrerer temporärer Tabellen verwendet wird.
Die allgemeine Syntax der WITH as-Anweisung lautet wie folgt:
WITH [RECURSIVE] cte_name (column_name1,column_name2,...) AS ( subquery1 UNION [ALL] subquery2 UNION [ALL] subquery3 ... ) SELECT * FROM cte_name;
Nach dem Login kopieren
Daunter
cte_name: der Name der temporären Tabelle; #
Spaltenname1, Spaltenname2,...: Spaltennamen in der temporären Tabelle;
Unterabfrage1, Unterabfrage2, Unterabfrage3...: Unterabfrageanweisungen.
- MIT als praktische Anwendung
Die praktischen Anwendungsszenarien von MIT als Aussage umfassen hauptsächlich die folgenden Aspekte:
1) Rekursive Abfrage
Mithilfe der WITH-Anweisung können Sie eine rekursive Abfrage implementieren und eine hierarchische Ergebnismenge erhalten. Im Folgenden wird zur Veranschaulichung eine Mitarbeitertabelle als Beispiel verwendet:
WITH RECURSIVE emp AS ( SELECT emp_id, emp_name, emp_manager_id FROM employees WHERE emp_manager_id IS NULL UNION ALL SELECT e2.emp_id, e2.emp_name, e2.emp_manager_id FROM employees e2 INNER JOIN emp ON e2.emp_manager_id = emp.emp_id ) SELECT * FROM emp;
Nach dem Login kopieren
In der obigen Anweisung besteht der grundlegende Teil der rekursiven Abfrage darin, den Stammknoten in der Tabelle nachzuschlagen (d. h. Mitarbeiter ohne Manager). ). In jeder rekursiven Iteration findet eine Unterabfrage der Tabelle die untergeordneten Knoten jedes Knotens auf einmal und fügt sie der Ergebnismenge hinzu.
2) Organisieren Sie die Ergebnismenge
Mit der WITH-Anweisung können mehrere Abfrageergebnisse kombiniert werden, um Multi-Table-Join-Abfragen durchzuführen. Im Folgenden wird zur Veranschaulichung eine Tabelle mit Produktverkäufen und -beständen als Beispiel verwendet:
WITH sales AS ( SELECT p.product_id, p.product_name, s.sale_id, s.sale_date, s.quantity, s.price FROM products p INNER JOIN sales s ON p.product_id = s.product_id ), inventory AS ( SELECT p.product_id, p.product_name, i.inventory_id, i.quantity FROM products p INNER JOIN inventory i ON p.product_id = i.product_id ) SELECT s.sale_id, s.sale_date, s.product_id, s.product_name, s.quantity, s.price, i.inventory_id, i.quantity as inventory_quantity FROM sales s INNER JOIN inventory i ON s.product_id = i.product_id;
Nach dem Login kopieren
In der obigen Anweisung definieren wir zunächst zwei temporäre Tabellen, Verkäufe und Lagerbestände, und führen dann eine gemeinsame Abfrage für diese beiden Tabellen durch . Geben Sie die Ergebnismenge aus. Dieser Ergebnissatz enthält Verkaufsinformationen aus der Verkaufstabelle und Lagerbestandsinformationen aus der Lagerbestandstabelle.
3) Unterabfrageoptimierung
WITH as-Anweisung kann auch zur Optimierung von Unterabfragen verwendet werden. Unterabfrageanweisungen sind oft ineffizient und können zu verwirrendem Code und Fehlern führen. Die WITH as-Anweisung kann die Lesbarkeit und Wartbarkeit von Abfragen verbessern. Im Folgenden wird als Beispiel eine Tabelle mit Bestellungen und Bestelldetails verwendet:
WITH ord AS ( SELECT order_id FROM orders WHERE order_date > '2022-01-01' ) SELECT * FROM order_details WHERE order_id IN (SELECT order_id FROM ord);
Nach dem Login kopieren
Wir definieren eine temporäre Tabelle mit dem Namen „ord“, um Bestellinformationen zu speichern, die die Bedingungen erfüllen. Verwenden Sie dann in der nachfolgenden Abfrage direkt die Anweisung WHERE order_id IN (SELECT order_id FROM ord), um die Bestelldetails abzufragen. Dies verbessert nicht nur die Abfrageeffizienz, sondern auch die Lesbarkeit und Wartbarkeit des Codes.
Das obige ist der detaillierte Inhalt vonWas ist die Syntax von with as mysql. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!