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

请问为什么不按规则排序

SELECT id,DishCategory_Path,DishCategory_Name,concat(DishCategory_Path,',',id) as fullpath FROM `chi_dishcategory` order by fullpath asc;


542bc4f60001c29904480303.jpg


正在回答

5 回答

教程中,只有一个一级分类,而多个一级分类下,fullpath排序时会有问题,这样解决就行了,如图,注意path非一级全部以,开头54b12b5600013bbc05000399.jpg

1 回复 有任何疑惑可以回复我~

老师,你这边的数据都按规则排序好的,那如果不规则的数据,怎么按这种格式展示呢,就比如 留言板,他的数据库数据不是这么有整齐

0 回复 有任何疑惑可以回复我~

另外给你找了点资料:

http://blog.csdn.net/funnsy/article/details/7479946

(内容中的wm_concat方法和concat使用的方法大致上相同,你参考下,大体就能设计出你想要的排序方法了,希望对你有些帮助)。

0 回复 有任何疑惑可以回复我~

542be1fd000186dc05000068.jpg

542be1fd000122b203390291.jpg

为什么他们的fullpath排序是这样的。一层一层排的。再看一条评论

0 回复 有任何疑惑可以回复我~
#1

伏地炸毛

首先,按照你下面截图的内容制作一个一模一样的sql表格, 先测试id为6,7,8的内容: 我只是猜测啊,你的id是string类型的,将id=7改写成id=77,看下排序, 然后第二步,将id的类型改写为int类型,再对比一下排序; 第二次测试表中大字手机、儿童机和色盲机,将id都修改成统一的数字为33(现屏蔽掉id唯一选项) 将id的类型修改为string类型和int类型做对比; 这样你就会对concat的方法使用进一步了解了。
2014-10-02 回复 有任何疑惑可以回复我~

亲  order by fullpath asc; 是按照fullpath排序的,而且排序也是正确的,想问下你是不是想按id排序order by id asc;

0 回复 有任何疑惑可以回复我~
#1

伏地炸毛

如果是按fullpath排序 到1,18 和 1,2 的时候,它的对比顺序是:比较首位1 比较第二位, 比较第三位1跟2 才排出的此顺序,而不是像你想想中2比18,大概能猜出该列属性是String类型,以上
2014-10-01 回复 有任何疑惑可以回复我~

举报

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