;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 中出现一次。