SQL Server数据库如何使用SQL语句(CTE/递归)查询一个菜单树形结构的完整路径或者名称呢?
4.11K 次浏览
在SQL Server数据库中,当前有一个菜单树形结构的数据表(可能包含无限子级),现需要使用SQL语句实现查询每条记录的完整路径或者名称和层级深度,应该如何实现呢?
数据表结构和示例数据类似如下:
id | name | parentId |
---|---|---|
1 | Dep 1 | 0 |
2 | Dep 2 | 1 |
3 | Dep 3 | 0 |
4 | Dep 4 | 1 |
5 | Dep 5 | 4 |
6 | Dep 6 | 2 |
期望的结果为:
parentId | id | name | Level | Path |
---|---|---|---|---|
0 | 1 | Dep 1 | 0 | 1 |
1 | 2 | Dep 2 | 1 | 1.1 |
2 | 6 | Dep 6 | 2 | 1.1.1 |
1 | 4 | Dep 4 | 1 | 1.2 |
4 | 5 | Dep 5 | 2 | 1.2.1 |
0 | 3 | Dep 3 | 0 | 2 |
或者
ID | FullPath | Level |
---|---|---|
1 | Dep 1 | 0 |
2 | Dep 1\Dep 2 | 1 |
3 | Dep 3 | 0 |
4 | Dep 1\Dep 4 | 1 |
5 | Dep 1\Dep 4\Dep 5 | 2 |
6 | Dep 1\Dep 2\Dep 6 | 2 |