您的位置:首页 > 博客中心 > 数据库 >

sql 排序 分组 层级 筛选 - God聚会啊

时间:2022-03-10 17:04

前言:

以前做过2种列表,1是有排序,有筛选功能,但是没有层级和分组,2是有树形结构的层级和分组,但是数据是一下全部加载出来,虽然有点落后,没有用到分页加载,但是也是受制于大环境。

今天有1个需求是 分组 排序 筛选 层级, 一开始没有想到好办法,后来才知道可以order by 按组排序。

核心思想:

表中有2个字段,层级level, id, parentid,这里就是先把过滤好的数据的id和parentid形成1个集合,在原有的数据表中查找这个集合对应的数据,再额外多做2个字段(本次需求是这样排序,如果你有需要可以自行调整),1个是分区的groupid,1个是分组内的排序groupinnnerid,为了防止点击排序之后父子级乱掉,需要这个分组内id始终升序,或者始终降序。

代码参考:

gxlsystem.com,布布扣

上面1种做法结果不是很理想,就是多列需要排序的情况下就不是很完美。

鉴于C#在处理循环方面代码要比SQL简单易写一些,这里提供第2种思路

这里有2级层级,先把目标数据查出来,然后把其中的level=1和level=2的父节点找出来做1个去重,使用union,然后按照自己的需求排序,然后把其中level=2的做成另外一张表,然后顺序遍历第1张表的每一行,在第2张表中找到它的子节点,按顺序添加,那么完成之后的datatable就是已经排过序,并且有层级的,这样的好处是不用想去拼接Hierarchy字段,缺点是不能灵活处理多级的问题。

 

如果你有更好更灵活的思路,可以给我留言,知识需要分享才宝贵!

sql 排序 分组 层级 筛选 - God聚会啊,布布扣,bubuko.com

热门排行

今日推荐

热门手游