Maison >base de données >tutoriel mysql >Comment puis-je répliquer une requête MSSQL CTE récursive pour créer une arborescence de catégories dans MySQL ?
Transformation d'une requête MSSQL CTE en MySQL
Dans un schéma MySQL avec une table 'category' contenant des colonnes pour l'identifiant, l'identifiant parent et nom, vous souhaitez répliquer une requête MSSQL CTE qui crée une arborescence de catégories de bas en haut pour un ID de catégorie spécifié. Cette requête est la suivante :
with CTE (id, pid, name) as ( select id, parentid as pid,name from category where id = 197 union all select CTE.pid as id , category.parentid as pid, category.name from CTE inner join category on category.id = CTE.pid ) select * from CTE
Malheureusement, MySQL ne prend pas en charge les CTE. Par conséquent, utiliser une sous-requête à leur place n'est peut-être pas une option car le CTE en question est récursif, se référençant lui-même dans la requête. MySQL ne prend pas en charge les CTE récursifs.
Pour obtenir une fonctionnalité similaire, une procédure stockée doit être implémentée. Une réponse précédente sur la façon de « Générer un arbre basé sur la profondeur à partir de données hiérarchiques dans MySQL (sans CTE) » peut servir de point de départ pour l'élaboration d'une telle procédure.
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!