SQL:对父行下的子行进行排序
我的SQL Server数据库中有这个表SQL:对父行下的子行进行排序,sql,sql-server,Sql,Sql Server,我的SQL Server数据库中有这个表 MenuID MenuText ParentMenu MenuOrder MenuLevel ------------------------------------------------------------- 1 Home 0 1 0 2 Administrator 0 2
MenuID MenuText ParentMenu MenuOrder MenuLevel
-------------------------------------------------------------
1 Home 0 1 0
2 Administrator 0 2 0
3 Groups 2 1 1
4 Users 2 2 1
5 Permissions 2 3 1
6 Test Level2 3 1 2
7 Test Level3 6 1 3
我想对该表的行进行如下排序:
,Home
是菜单级0项李>Administrator
- MenuLevel 1项将根据其指向父菜单的
列位于其顶级菜单下。子项将根据其ParentMenu
列进行排序李>MenuOrder
| MenuID | MenuText | ParentMenu | MenuOrder | MenuLevel |
|--------|---------------|------------|-----------|-----------|
| 1 | Home | 0 | 1 | 0 |
| 2 | Administrator | 0 | 2 | 0 |
| 3 | Groups | 2 | 1 | 1 |
| 6 | Test Level2 | 3 | 1 | 2 |
| 7 | Test Level3 | 6 | 1 | 3 |
| 4 | Users | 2 | 2 | 1 |
| 5 | Permissions | 2 | 3 | 1 |
请包括预期结果。通用表表达式(CTE)将满足您的要求。
| MenuID | MenuText | ParentMenu | MenuOrder | MenuLevel |
|--------|---------------|------------|-----------|-----------|
| 1 | Home | 0 | 1 | 0 |
| 2 | Administrator | 0 | 2 | 0 |
| 3 | Groups | 2 | 1 | 1 |
| 6 | Test Level2 | 3 | 1 | 2 |
| 7 | Test Level3 | 6 | 1 | 3 |
| 4 | Users | 2 | 2 | 1 |
| 5 | Permissions | 2 | 3 | 1 |