Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL:对父行下的子行进行排序_Sql_Sql Server - Fatal编程技术网

SQL:对父行下的子行进行排序

SQL:对父行下的子行进行排序,sql,sql-server,Sql,Sql Server,我的SQL Server数据库中有这个表 MenuID MenuText ParentMenu MenuOrder MenuLevel ------------------------------------------------------------- 1 Home 0 1 0 2 Administrator 0 2

我的SQL Server数据库中有这个表

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
    Administrator
    是菜单级0项
  • MenuLevel 1项将根据其指向父菜单的
    ParentMenu
    列位于其顶级菜单下。子项将根据其
    MenuOrder
    列进行排序
我尝试了很多方法,但不知道如何使用query来实现它。

试试这个:

结果:

| 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 |