WITH RECURSIVE définit une CTE qui se référence elle-même : une partie d'ancrage fournit les lignes de départ, puis une partie récursive en produit de nouvelles à partir des précédentes, jusqu'à ce qu'il n'y en ait plus. Elle sert à générer des séries et à parcourir des hiérarchies. Une condition d'arrêt évite les boucles infinies.
Exemple
WITH RECURSIVE n(i) AS (
SELECT 1 UNION ALL SELECT i + 1 FROM n WHERE i < 5
)
SELECT i FROM n;