mysql 方便的数据排序

场景

一般数据排序选择 id, created_at 等,特别在意顺序时就要使用排序字段,我们这里使用 rank 字段。

常规做法

当然是把 rank 字段设成 int 型,这样做正向反向查询都没有问题。有问题是修改顺序时,无法调整某条记录的顺序。

varchar 排序

这时想到 varchar 排序是不是可以灵活一些

select * from unit order by rank
rank
1
10
100
2
3
4
6
7
8
9

如果想要数字大小排序可以这样

select * from unit order by rank+0
rank
1
2
3
4
6
7
8
9
10
100

重点来了,如何才能改变某条记录到特定位置呢?如 7 到 3 后面,答案是把 7 改成 3a。

select * from unit order by rank+0
rank
1
2
3
3a
4
6
8
9
10
100

就是这样了

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容