Rekurencyjne CTE
Mechanizm SQL: składnia WITH RECURSIVE dla zapytania rekurencyjnego. Służy do przechodzenia struktur drzewiastych (hierarchia organizacji, drzewa kategorii), spacerów po grafach i generowania ciągów liczb.
Klasyczny przykład: znajdź wszystkich podwładnych danego menedżera.WITH RECURSIVE subs AS (SELECT id, name, boss_id FROM employees WHERE id = ? UNION SELECT e.id, e.name, e.boss_id FROM employees e JOIN subs s ON e.boss_id = s.id) SELECT * FROM subs;
Standard SQL od 1999 roku, ale solidną implementację ma PostgreSQL; MySQL dostał ją dopiero w wersji 8.0 (2018). Ryzyko: bez warunku zakończenia rekurencja jest nieskończona, planer jej nie zatrzyma i zapytanie wisi. Nowoczesne bazy grafowe (Neo4j, Memgraph) przechodzą grafy wydajniej, ale CTE w zupełności wystarczają do większości zapytań o drzewa.