Sobes.tech
Junior — Middle

Wie unterscheiden sich rekursive und nicht-rekursive Ausdrücke in Common Table Expressions (CTE) in SQL?

sobes.tech KI

Antwort von AI

Die Common Table Expression (CTE) in SQL ist ein temporäres Ergebnis, das in der Hauptabfrage verwendet werden kann. Es gibt zwei Arten von CTEs: rekursive und nicht rekursive.

  • Nicht-rekursive CTE: ist einfach eine benannte temporäre Datenmenge, die durch eine einzelne Abfrage definiert ist. Sie kann verwendet werden, um komplexe Abfragen zu vereinfachen oder Unterabfragen wiederzuverwenden.

  • Rekursive CTE: ist eine CTE, die sich selbst referenziert, was rekursive Operationen ermöglicht, z.B. das Durchlaufen von Hierarchien oder Graphen.

Beispiel für eine nicht-rekursive CTE:

WITH RecentOrders AS (
    SELECT * FROM Orders WHERE OrderDate > '2024-01-01'
)
SELECT * FROM RecentOrders WHERE CustomerID = 123;

Beispiel für eine rekursive CTE (Suche aller Untergebenen eines Mitarbeiters):

WITH RECURSIVE Subordinates AS (
    SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- Chef
    UNION ALL
    SELECT e.EmployeeID, e.ManagerID, e.Name
    FROM Employees e
    INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;

Auf diese Weise ermöglichen rekursive CTEs den Aufbau von Ketten und Hierarchien, während nicht-rekursive CTEs die Struktur der Abfrage vereinfachen.