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;
Daunter
cte_name: der Name der temporären Tabelle; 🎜🎜#
Spaltenname1, Spaltenname2,...: Spaltennamen in der temporären Tabelle; Unterabfrage1, Unterabfrage2, Unterabfrage3...: Unterabfrageanweisungen.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;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;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);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!