path分类实现的排序问题

来源:-

蹋雪

2015-11-14 16:58

mysql中 order by 是从左到右逐位比较的。后期给某个分类添加子类,根据fullpath排序就可能出现下图这种情况,这种情况应该怎么解决???

如图:

http://img.mukewang.com/5646f674000157b802790511.jpg

写回答 关注

1回答

  • 蹋雪
    2015-11-16 16:47:52

    这个问题已经解决了。

    1、因为mysql排序是从左到右逐位比较。后期添加分类,在排序的时候会出现断层。解决办法是除了第1位0外,在节点id前面使用0把id填充到固定位数,或者把所有位置上的id都填充到相同位数。例如:0,0000000001,0000000002;0000000000,0000000001,0000000002。

    2、这样插入分类数据path就是指fullpath(全路径),在插入的时候就要把fullpath算出来。fullpath处理方法

        方法1:插入数据,获取插入id,根据需求算出fullpath,更新path;

        方法2:自己维护id,在插入数据的时候就算出fullpath. 

    3、不使用order by fullpath在mysql中进行排序,排序在后端完成或者前端(建议把数据交给前端,前端进行排序处理),这样可以提高性能。

    有更好的方法,希望大家提出来,一起进步

PHP无限级分类技术

经典的递归实现和全路径实现两种方式实现无限分类

30076 学习 · 83 问题

查看课程

相似问题