Sobes.tech
Junior — Middle

Πώς διαφέρουν οι αναδρομικές και μη αναδρομικές εκφράσεις στις κοινές εκφράσεις πίνακα (CTE) σε SQL;

sobes.tech AI

Απάντηση από AI

Η Έκφραση Κοινής Πίνακα (CTE) σε SQL είναι ένα προσωρινό αποτέλεσμα που μπορεί να χρησιμοποιηθεί στο κύριο ερώτημα. Υπάρχουν δύο τύποι CTE: αναδρομικοί και μη αναδρομικοί.

  • Μη αναδρομικό CTE: είναι απλώς ένα ονοματοδοτημένο προσωρινό σύνολο δεδομένων που ορίζεται από ένα μόνο ερώτημα. Μπορεί να χρησιμοποιηθεί για την απλοποίηση σύνθετων ερωτημάτων ή την επαναχρησιμοποίηση υποερωτημάτων.

  • Αναδρομικό CTE: είναι ένα CTE που αναφέρεται στον εαυτό του, επιτρέποντας την εκτέλεση αναδρομικών λειτουργιών, όπως η διαδρομή σε ιεραρχίες ή γραφήματα.

Παράδειγμα μη αναδρομικού CTE:

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

Παράδειγμα αναδρομικού CTE (εύρεση όλων των υπο-υπαλλήλων ενός υπαλλήλου):

WITH RECURSIVE Subordinates AS (
    SELECT EmployeeID, ManagerID, Name FROM Employees WHERE EmployeeID = 1 -- προϊστάμενος
    UNION ALL
    SELECT e.EmployeeID, e.ManagerID, e.Name
    FROM Employees e
    INNER JOIN Subordinates s ON e.ManagerID = s.EmployeeID
)
SELECT * FROM Subordinates;

Έτσι, τα αναδρομικά CTE επιτρέπουν την κατασκευή αλυσίδων και ιεραρχιών, ενώ τα μη αναδρομικά απλώς απλοποιούν τη δομή του ερωτήματος.