Maison >base de données >tutoriel mysql >Comment fonctionnent les CTE récursifs étape par étape ?

Comment fonctionnent les CTE récursifs étape par étape ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-28 21:17:10206parcourir

How Do Recursive CTEs Work Step-by-Step?

Répartition de l'exécution récursive des CTE

Les CTE récursifs suivent un processus d'exécution étape par étape qui produit finalement l'ensemble de résultats souhaité. Décomposons chaque étape ligne par ligne pour une meilleure compréhension.

AVEC abcd AS (

Cette ligne déclare le CTE récursif nommé "abcd". Elle sert de table temporaire qui accumule les résultats.

-- ancre

La première L'instruction select fait office d'ancre, sélectionnant les lignes qui répondent à la condition d'ancrage. Dans ce cas, elle récupère les lignes de @tbl avec un ParentID nul. Cela aboutit à la population initiale du CTE "abcd".

SELECT id, Name, ParentID, CAST(Name AS VARCHAR(1000)) AS Path

Cette ligne extrait l'ID, le nom, ParentID, et une colonne calculée "Path" qui contient initialement uniquement le Nom de la ligne.

FROM @tbl

Les données proviennent de la table temporaire @tbl.

OÙ ParentId EST NULL

Cette condition filtre les lignes où le ParentID est nul, sélectionnant efficacement les lignes de niveau supérieur.

UNION ALL

Cet opérateur combine l'instruction de sélection d'ancrage avec le membre récursif.

--membre récursif

La deuxième instruction select forme le membre récursif, qui effectue des itérations basé sur l'ancre.

SELECT t.id, t.Name, t.ParentID, CAST((a.path '/' t.Name) AS VARCHAR(1000)) AS "Path"

Cette ligne récupère l'ID, le nom, le ParentID et une colonne modifiée "Path" qui concatène le "Path" du parent avec le Nom de la ligne actuelle.

FROM @tbl AS t

Les données proviennent de la table temporaire @tbl, alias "t."

JOIN abcd AS a

Cette jointure relie les lignes en "t" avec celles de l'existant "abcd" CTE en utilisant la colonne ParentID.

ON t.ParentId = a.id

La condition de jointure garantit que les lignes enfants correspondent à leurs lignes parents.

SELECT * FROM abcd

Enfin, cette instruction renvoie le Ensemble de résultats complet du CTE récursif, y compris toutes les itérations.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn