Zusammenfassung: In diesem Tutorial erfahren Sie, wie Sie MySQL CTE oder common table expression verwenden, um komplexe Abfragen besser lesbar zu erstellen.
Was ist eine common table expression, oder CTE
Eine common table expression ist eine benannte temporäre Ergebnismenge, besteht nur in der Ausführung Bereichs einer einzelnen SQL-Anweisung, z.B.,,SELECT
, INSERT
, UPDATE
oder DELETE
.
Ähnlich einer abgeleiteten Tabelle wird ein CTE nicht als Objekt gespeichert und dauert nur während der Ausführung einer Abfrage.
Im Gegensatz zu einer abgeleiteten Tabelle kann ein CTE selbst referenzierend sein (ein rekursiver CTE) oder in derselben Abfrage mehrmals referenziert werden. Darüber hinaus bietet ein CTE eine bessere Lesbarkeit und Leistung im Vergleich zu einer abgeleiteten Tabelle.
MySQL CTE Syntax
Die Struktur eines CTE enthält den Namen, eine optionale Spaltenliste und eine Abfrage, die den CTE definiert., Nachdem der CTE definiert wurde, können Sie ihn als Ansicht in einer SELECT
, INSERT
, UPDATE
, DELETE
oder CREATE VIEW
Anweisung verwenden.
Das Folgende veranschaulicht die grundlegende Syntax eines CTE:
Code language: SQL (Structured Query Language) (sql)
Beachten Sie, dass die Anzahl der Spalten in der query
der Anzahl der Spalten in der column_list
entsprechen muss., Wenn Sie weglassen column_list
auf den Allgemeinen Tabellenausdruck verwenden der Liste der Spalte der Abfrage definiert die CTE
Einfache MySQL-CTE-Beispiele
verwenden Wir das customers
Tabelle aus der Beispieldatenbank zur demonstration:
Das folgende Beispiel zeigt, wie das CTE für die Abfrage von Daten aus dem customers
Tabelle in der Beispieldatenbank.
Beachten Sie, dass dieses Beispiel nur zu Demonstrationszwecken dient, um Ihnen das Verständnis des CTE-Konzepts zu erleichtern.,
In diesem Beispiel lautet der Name des CTE customers_in_usa
, die Abfrage, die den CTE definiert, gibt zwei Spalten zurück customerName
und state
. Daher gibt die customers_in_usa
CTE alle Kunden in den USA zurück.
Nachdem wir die customers_in_usa
CTE definiert haben, haben wir in der SELECT
– Anweisung darauf verwiesen, nur Kunden in Kalifornien auszuwählen.,
Siehe folgendes Beispiel:
Code language: SQL (Structured Query Language) (sql)
In diesem Beispiel gibt die CTE die Top 5 Vertriebsmitarbeiter im Jahr 2003. Danach haben wir auf die topsales2003
CTE verwiesen, um zusätzliche Informationen über den Vertriebsmitarbeiter einschließlich Vor-und Nachname zu erhalten.,
Eine erweiterte MySQL-CTE Beispiel
Sehen Sie sich das folgende Beispiel an:
Code language: SQL (Structured Query Language) (sql)
In diesem Beispiel haben wir zwei CTEs in der gleichen Abfrage. Der erste CTE (salesrep
) ruft die Mitarbeiter ab, deren Berufsbezeichnung der Vertriebsmitarbeiter ist. Der zweite CTE (customer_salesrep
) verweist auf den ersten CTE in der INNER JOIN
– Klausel, um den Vertriebsmitarbeiter und die Kunden zu ermitteln, für die jeder Vertriebsmitarbeiter verantwortlich ist.,
Nach dem zweiten CTE fragen wir Daten aus diesem CTE mit einer einfachen SELECT
– Anweisung mit der ORDER BY
– Klausel ab.,
Klausel kann am Anfang von , UPDATE
und DELETE
Anweisungen verwendet werden:
Code language: SQL (Structured Query Language) (sql)
Zweitens kann eine WITH
Klausel am Anfang einer Unterabfrage verwendet werden oder eine abgeleitete Tabellenunterabfrage:
Code language: SQL (Structured Query Language) (sql)
Drittens kann eine WITH
– Klausel unmittelbar vor SELECT
der Anweisungen verwendet werden, die eine SELECT
– Klausel enthalten:
In diesem Tutorial haben Sie gelernt, wie Sie MySQL CTE verwenden, um komplexe Abfragen.,
- War dieses tutorial hilfreich?
- YesNo