mysql查询结果自定义排序
我们知道,使用mysql的order by
即可实现指定字段普通的排序效果,但是有时候这种排序效果并不能满足我们的需求。
达到自定义排序的目的,我们有两种实现方式,分别为FIELD
和FIND_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
函数查找就对了。
如果您觉得本文对您有用,欢迎捐赠或留言~
- 本博客所有文章除特别声明外,均可转载和分享,转载请注明出处!
- 本文地址:https://www.leevii.com/?p=272