sammanfattning: i den här handledningen lär du dig hur du använder MySQL CTE eller common table expression för att konstruera komplexa frågor på ett mer läsbart sätt.
vad är ett vanligt tabelluttryck eller CTE
ett vanligt tabelluttryck är en namngiven tillfällig resultatuppsättning som endast finns inom exekveringsområdet för en enda SQL-sats, t. ex.,,SELECT
, INSERT
, UPDATE
, eller DELETE
.
i likhet med en härledd tabell lagras inte en CTE som ett objekt och varar endast under utförandet av en fråga.
Till skillnad från en härledd tabell kan en CTE vara självreferenser (en rekursiv CTE) eller kan refereras flera gånger i samma fråga. Dessutom ger en CTE bättre läsbarhet och prestanda i jämförelse med en härledd tabell.
MySQL CTE syntax
strukturen för en CTE innehåller namnet, en valfri kolumnlista och en fråga som definierar CTE., När CTE har definierats kan du använda den som en vy i ett SELECT
, INSERT
, UPDATE
, DELETE
eller CREATE VIEW
uttalande.
följande visar den grundläggande syntaxen för en CTE:
Code language: SQL (Structured Query Language) (sql)
Observera att antalet kolumner iquery
måste vara samma som antalet kolumner icolumn_list
., Om du utelämnar column_list
använder CTE kolumnlistan för frågan som definierar CTE
enkla MySQL CTE-exempel
vi använder tabellen customers
från provdatabasen för demonstration:
följande exempel visar hur man använder en CTE för att fråga data från tabellen customers
I provdatabasen.
Observera att detta exempel endast är för demonstrationsändamål för att göra det enkelt för dig att förstå CTE-konceptet.,
i det här exemplet är namnet på CTE customers_in_usa
, frågan som definierar CTE returnerar två kolumner customerName
och state
. Därför returnerarcustomers_in_usa
CTE alla kunder i USA.
Efter att ha definieratcustomers_in_usa
CTE refererade vi till det iSELECT
– uttalandet för att bara välja kunder i Kalifornien.,
se följande exempel:
Code language: SQL (Structured Query Language) (sql)
i det här exemplet returnerar CTE de 5 bästa försäljningsrapporten 2003. Därefter refererade vi tilltopsales2003
CTE för att få ytterligare information om försäljningsrapporten inklusive förnamn och efternamn.,
ett mer avancerat MySQL CTE-exempel
se följande exempel:
Code language: SQL (Structured Query Language) (sql)
i det här exemplet har vi två CTEs i samma fråga. Den första CTE (salesrep
) får de anställda vars jobbtitlar är säljare. Den andra CTE (customer_salesrep
) refererar till den första CTE iINNER JOIN
– klausulen för att få säljare och kunder som varje säljare ansvarar för.,
Efter att ha den andra CTE, vi fråga data från den CTE med hjälp av en enkelSELECT
uttalande medORDER BY
klausul.,
– klausulen kan användas i början av SELECT
, UPDATE
och DELETE
– satser:
Code language: SQL (Structured Query Language) (sql)
För det andra kan en WITH
– klausul användas i början av en subquery eller en härledd tabell subquery:
Code language: SQL (Structured Query Language) (sql)
tredje, en WITH
– klausul kan användas omedelbart före SELECT
av de uttalanden som innehåller en SELECT
– klausul:
i den här handledningen har du lärt dig hur du kan använd MySQL CTE för att förenkla komplexa frågor.,
- var den här handledningen till hjälp?
- YesNo