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,‘,‘)),效果如下:
备注:
INSTR(字段名, 字符串) 这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始) |
博客园-白超华
以上是关于MySQL使用 IN 查询取出数据排序问题(与in排序相同不排序)的主要内容,如果未能解决你的问题,请参考以下文章
准备好的语句,`WHERE .. IN(..)` 查询和排序 - 使用 MySQL
MySql用IN查询时(或类似IN),如何保证按输入的顺序显示