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開始)

 

 

 

博客園-白超華


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM