无限级分类中的一个高级BUG

来源:互联网 发布:php服务器环境 编辑:程序博客网 时间:2024/06/02 13:58

相信很多人都用过无限级分类,这种分类方式简单高效,管理起来也比较方便,不过小high今天在进行新一轮的尝试的时候发现了一个之前没有遇到过的BUG。

之前我们在用的时候很多时候sql语句是这么写的

1
select *,concat(path, '_', id) as ids from cate order by ids

但是今天出现了一个小bug我把数据表的状态发出来

wuxianji相信眼睛比较敏锐的朋友们已经发现,如果遇到10以上的顶级分类的时候,就会出现这种情况,这个时候的主要问题就是mysql的排序并不是自然排序,而是用ascii码进行的二进制排序,所以我们要将它变成自然排序

1
2
3
select *,concat(path, '_', id) as ids from cate order by ids*1
 
select *,concat(path, '_', id) as ids from cate order by ids+0

通过百度搜索并没有直接mysql自然排序的结果,只是找到这个看起来挺奇怪但是又非常凑效的一个东西,小high亲测,非常好使

wuxianji_2

哎 不得不说一个小小的问题,又被我发现了一个大问题,就是分隔符的问题,又花了我一个早上的时间来想通这个事儿,

分隔符要用 ‘-’,不要用下划线 ‘_’


注::转载至小High博客 » [小high原创]无限级分类中的一个高级BUG

0 0