;WITH CTE AS( SELECT T1.[菜单名][子菜单名],T1.[菜单ID][子菜单ID],''[父菜单名],T1.[父菜单ID] ,1[层级],CAST(T1.[菜单ID]AS VARCHAR(8000))[路径] FROM TB T1 LEFT JOIN TB T2 ON T1.[父菜单ID]=T2.[菜单ID] WHERE T2.[菜单ID] IS NULL UNION ALL SELECT T1.[菜单名][子菜单名],T1.[菜单ID][子菜单ID],T2.[菜单名][父菜单名],T1.[父菜单ID] ,T2.[层级]+1,T2.[路径]+'-'+CAST(T1.[菜单ID]AS VARCHAR(10)) FROM TB T1 JOIN CTE T2 ON T1.[父菜单ID]=T2.[菜单ID] ) SELECT * FROM CTE
传统的CTE递归应用,你参考下 ------解决思路----------------------
要看子菜单的级别,如果子菜单还有子菜单,那就要用递归的方法
哥,看看我的帖子,谢谢,急求,我不会写,两三句话我就写不出来了。
你那破东西没个把月搞不出来 ------解决思路---------------------- CTE的别名 ------解决思路---------------------- 递归啊。 就是每条被插入 menu 的记录,都会在 p 中出现一次。