MySQL使用 IN 查询取出数据排序问题(与in排序相同不排序)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL使用 IN 查询取出数据排序问题(与in排序相同不排序)相关的知识,希望对你有一定的参考价值。

mysql使用 IN 查询取出数据排序问题(与in排序相同)

今天在项目中遇到一个问题,就是做一个最近浏览的功能,但是功能做出来了,取出数据时候要用到类似这么一条带in查询的sql语句,

select * from xxx where id in (3,2,3,12,1) 

其中in里面的内容就是最近流浪的id,但是直接取出来他会默认用id排序,这时候取出的数据在页面显示的最新浏览的导致不是第一项,这时候如何做到不排序呢?

技术分享

我想到一个笨方法,就是用php程序排序后在插入进行查询,但是比较笨

其实也可以这样:

select * from xxx where id in (3,2,3,12,1) order by field(id,3,2,3,12,1)  但是这种效率低下

还可以这样使用INSTR()函数:

select * from xxx where id in (3,2,3,12,1) order by instr(‘3,2,3,12,1‘,concat(‘,‘,id,‘,‘)),效果如下:

技术分享

备注:

mysql中INSTR函数的用法

INSTR(字段名, 字符串)

这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始)

 

 

 

博客园-白超华

以上是关于MySQL使用 IN 查询取出数据排序问题(与in排序相同不排序)的主要内容,如果未能解决你的问题,请参考以下文章

准备好的语句,`WHERE .. IN(..)` 查询和排序 - 使用 MySQL

(转)MySQL中In与Exists的区别

MySql用IN查询时(或类似IN),如何保证按输入的顺序显示

mysql in 排序 也可以按in里面的顺序来排序

mysql find_in_set(str,strlist)函数使用(in 按照里面的id排序)

MySQL 查询优化:IN() 与 OR