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;
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;
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:
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!