天天看点

mysql ORDER BY自定义排序

前言

最近一直在忙公司新项目开发, 主要是用go开发后端功能, 所以一直都没时间写博客了, 也不知道要写些啥, 正好刚有个朋友问我排序的问题, 平常用的也比较多, 这里写一篇划波水 (用Go一时爽, 一直用Go一直爽)

开始表演

默认排序

都知道 sql 默认自带排序, 字符串的话按照字母顺序来, 数字的话按照数字大小来, 比如这个样子

这是表结构

mysql ORDER BY自定义排序

sql 语句及执行结果

mysql ORDER BY自定义排序

自定义排序

实际过程中我们可能会需要自己自定义排序, 比如字段里的rev, 我想按照 (1,3,2) 这样的方式来查怎么办

select * from docs order by field (rev, 1,3,2) asc;
           
mysql ORDER BY自定义排序

如果我要 1的优先级最高, 2和3平级按照content来排序呢

select * from docs order by field (rev, 1) desc, content asc;
           
mysql ORDER BY自定义排序

总结

到这里基本也就都清楚了, 语法为 order by field (字段名, 数据排序顺序…),

把需要排序的数据写进去, field函数会进行比较返回 1,2,3进行排序, 默认正序(asc), 没有数据或不在排序列表返回0;