Heim > Datenbank > MySQL-Tutorial > Wann sollten Sie einen Common Table Expression (CTE) anstelle einer abgeleiteten Tabelle verwenden?

Wann sollten Sie einen Common Table Expression (CTE) anstelle einer abgeleiteten Tabelle verwenden?

Patricia Arquette
Freigeben: 2025-01-05 22:45:40
Original
241 Leute haben es durchsucht

When Should You Use a Common Table Expression (CTE) Instead of a Derived Table?

Wann ist ein Common Table Expression (CTE) erforderlich?

Während abgeleitete Tabellen in allen Szenarien ausreichend zu sein scheinen, sind Common Table Expressions ( CTEs) bieten unter bestimmten Umständen deutliche Vorteile.

Einschränkungen von Derived und Temp Tabellen

Stellen Sie sich ein Szenario vor, in dem Daten mehrmals zusammengeführt werden müssen. Die Verwendung regulärer SELECT-Anweisungen oder abgeleiteter Tabellen würde dazu führen, dass die Join-Syntax für jede Instanz repliziert wird, was die Ausführlichkeit des Codes erhöht. Mit CTEs können Sie jedoch eine wiederverwendbare Tabelle definieren, auf die in der Abfrage mehrmals verwiesen werden kann.

Beispiel

Angenommen, Sie haben eine Tabelle „Kunden“ und möchten dies tun Finden Sie Kunden, die mehrere Bestellungen aufgegeben haben.

Verwenden CTE:

WITH CustomerOrders AS (
    SELECT CustomerID, COUNT(*) AS OrderCount
    FROM Orders
    GROUP BY CustomerID
)

SELECT *
FROM Customers
JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID
WHERE OrderCount > 1;
Nach dem Login kopieren

Verwendung einer abgeleiteten Tabelle:

(SELECT CustomerID, COUNT(*) AS OrderCount
FROM Orders
GROUP BY CustomerID) AS CustomerOrders

SELECT *
FROM Customers
JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID
WHERE OrderCount > 1;
Nach dem Login kopieren

Wie Sie sehen können, macht der CTE-Ansatz die Definition des abgeleiteten Tabellenalias überflüssig („Kundenbestellungen“) zweimal.

Andere CTE Vorteile

Abgesehen von der Wiederverwendbarkeit bieten CTEs zusätzliche Vorteile:

  • Rekursion: Rekursion kann mithilfe von CTEs implementiert werden, was komplexe Abfragen ermöglicht, die hierarchisch durchlaufen Datenstrukturen.
  • Temporäre Speicherung: CTEs Stellen Sie temporären Speicher für Zwischenabfrageergebnisse bereit, ohne dass explizite temporäre Tabellen erstellt werden müssen.
  • Gruppierung nach abgeleiteten Spalten: CTEs ermöglichen die Gruppierung nach Spalten, die von skalaren Unterabfragen oder nicht deterministischen Funktionen abgeleitet sind ist mit abgeleiteten Tabellen nicht möglich.

Das obige ist der detaillierte Inhalt vonWann sollten Sie einen Common Table Expression (CTE) anstelle einer abgeleiteten Tabelle verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage