mysql查询结果自定义排序

该文章由 leevare 发布于 ,归类于 mysql

我们知道,使用mysql的order by即可实现指定字段普通的排序效果,但是有时候这种排序效果并不能满足我们的需求。

达到自定义排序的目的,我们有两种实现方式,分别为FIELDFIND_IN_SET

FIELD方式

先看一条sql语句

select id from article where id in(1,2,3);

但是如果我想查询出来的结果排列方式分别为3,1,2该怎么实现呢?

select id from article where id in(1,2,3) order by field(id,3,1,2);

这样实现了上述的需求。

FIND_IN_SET方式

语法:FIND_IN_SET(str,strlist)

还以上述的需求为例,我们可以这样实现

select id from article where id in (1,2,3) order by find_in_set(id,'3,1,2');

另外: FIND_IN_SET除了可以用在order by排序外,还可以用在where语句中。

select id, list, name from `test` where find_in_set('hello',`list`);

该句话表达的意思就是查找list字段中包含hello关键词的信息。

这里list可以是一个变量,也可以是一个字段名称,如果这样用就错了:

select id, list, name from test where 'hello' in (list);

因为in后面要接这样的in('121','hello','good').但是这里list是个字段,所以用FIND_IN_SET函数查找就对了。

如果觉得我的文章对您有用,请您随意打赏。您的支持将鼓励我更加努力创作!

相关文章:

说点什么

avatar
300
  Subscribe  
提醒