Πώς διαφέρουν οι αναδρομικές και μη αναδρομικές εκφράσεις στις κοινές εκφράσεις πίνακα (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 επιτρέπουν την κατασκευή αλυσίδων και ιεραρχιών, ενώ τα μη αναδρομικά απλώς απλοποιούν τη δομή του ερωτήματος.