为了账号安全,请及时绑定邮箱和手机立即绑定

sql分组排(树形结构查询+排序)

sql分组排(树形结构查询+排序)

宝慕林4294392 2018-12-06 17:20:38
我要做的是一个菜单的排序问题    id           fun_name           parent_id            sort_id   1               root                     0                      1 107           |name                  1                      38   108           || her                   107                   2 110           |||is109                109                   1 109           || his                    107                   1   98             |namesf               1                       2 111           |||is109_2            109                    3        我要做的是按照 parent_id 分组,然后在按照sort_id排序即   id           fun_name           parent_id            sort_id   1               root                     0                      1 107           |name                  1                      38   108           || her                   107                   2 109           || his                    107                   1   110           |||is109                109                   1 111           |||is109_2            109                    3   98             |namesf               1                       2 意思就是父类排序,然后当前父类面就跟随子类,排序,子类下面还有...第一个父类排序完了就是第二个父类 1        1            1     1-1     1-1          1-1        1-1-1    1-1-1    1-1-1 2        2              2   2-1   2-2           2-3 3         3             3   3-3     3-3        3-3          层级式排序,第一个父类下面是子类一直到此结束,然后再是第二个类别排序,一次类推,N级。  
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

两种办法,一种办法是把所有数据都载入到程序中,然后用c#处理

另一种办法是修改表的设计,加上TreeCode字段,TreeCode字段值的规律如下

00001>

00001>00001>

00001>00002>

00001>00003>

00002>

00002>00001>

00002>00002>

00002>00003>

这个TreeCode字段是冗余字段,通过它可以很方便的取到你要求排序的层级数据

如果这张表的数据量很小的话,建议你把数据载入到程序中用C#写个递归函数处理。如果数据量很大,并且你也有条件修改表结构的话,可以添加冗余字段,解决此问题。

查看完整回答
反对 回复 2019-01-07
?
白衣染霜花

TA贡献1796条经验 获得超10个赞

select ROW_NUMBER() over(partition by parent_id order by stort_id) as rownum,Parent_ID,stort_id
 from 表,你再改改

查看完整回答
反对 回复 2019-01-07
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

谢谢您的回复,我是sqlserver,你给的方案是 oracle ,不过后来还是用sql的  CTE 解决了,就是一楼说的加一个冗余字段....不过非常感谢您的参与,谢谢~!祝你天天开心........

查看完整回答
反对 回复 2019-01-07
  • 3 回答
  • 0 关注
  • 508 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信