mysql自定义函数field ╰半夏微凉° 2021-06-24 14:35 444阅读 0赞 MySQL可以通过field()函数自定义排序,格式:field(value,str1,str2,str3,str4),value与str1、str2、str3、str4比较,返回1、2、3、4,如遇到null或者不在列表中的数据则返回0. 这个函数好像Oracle中没有专门提供(也可能是我没有用到),不过自己实现这样一个函数还是比较简单的。 mysql> select * from 表名 order by field(id,4,2,3,1); +——–+——–+————+——-+ | id | name +——–+——–+————+——-+ | 4 | | 2 | | 3 | | 1 | +——–+—— -+————+——-+ 那么它就会按照id为4,2,3,1的顺序排序。也可以使用desc倒序 mysql> select * from 表名 order by field(id,1,4,2,3) desc; +——–+——–+————+——-+ | id | name +——–+——–+————+——-+ | 3 | | 2 | | 4 | | 1 | +——–+—— -+————+——-+ 应用: 查询文章表table,取出所有文章,置顶ID为1、5、12、2的文章,并按上述顺序显示。 解决: SELECT \* FROM \`table\`ORDER BY FIELD(\`zj\`,1,5,12,2) DESC,\`time\` DESC
还没有评论,来说两句吧...