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開始) |
博客園-白超華