path分类实现的排序问题
mysql中 order by 是从左到右逐位比较的。后期给某个分类添加子类,根据fullpath排序就可能出现下图这种情况,这种情况应该怎么解决???
如图:
mysql中 order by 是从左到右逐位比较的。后期给某个分类添加子类,根据fullpath排序就可能出现下图这种情况,这种情况应该怎么解决???
如图:
2015-11-14
这个问题已经解决了。
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中进行排序,排序在后端完成或者前端(建议把数据交给前端,前端进行排序处理),这样可以提高性能。
有更好的方法,希望大家提出来,一起进步
举报