查詢時mysql會根據in裡面的內容預設排序,並不是自己寫的順序,想保持自己原有順序可按以下處理:
第一種:order by find_in_set(id,『2,3,5,4,7』)
例:select * from *** where id in (2,3,5,4,7) order by find_in_set(id,『2,3,5,4,7』)
注意:後面的排序規則都在乙個雙引號裡面,為乙個字串。
第二種:order by substring_index(『2,3,5,4,7』,id,1)
例:select * from *** where id in (2,3,5,4,7) order by substring_index(『2,3,5,4,7』,id,1)
注意:後面的排序規則都在乙個雙引號裡面,為乙個字串。
第三種:order by field
例:select * from *** where id in (2,3,5,4,7) order by field(id,2,3,5,4,)
注意:這裡沒有雙引號。
第四種:in裡面為變數(mybatis)
… in
#這種可以關聯排序表,用排序字段重新排序查詢結果
修改sql查詢預設排序問題
sql裡好象預設都將select出來的記錄都做了排序的,現在有以下的語句 select from tablename where class 0 and id in 252,679,321,100,270 我想在select完以後,輸出的結果是未排過序 那些id是怎麼進來的就怎麼排序 252679 ...
Mysql 查詢主鍵未指定排序時的預設排序問題
跑批量任務需要分批按順序把主鍵取出來,語句如下 select id from foo.bar limit 10 offset 0 id 109 13 14 15 128 129 130 190 226 227 複製 發現雖然用主鍵去查,但結果沒有按照主鍵排序。查詢 試試 select from fo...
oracle 預設排序
oracle對無order by的語句返回的結果不進行排序,oracle此時的處理方式是按照資料的物理儲存順序來讀取資料。因為rowid是每行資料的位址,所以有時候看起來會像是使用rowid排序的。但這個順序是可能被打亂的,在表的資料被刪除後,rowid會被新插入的資料占用。所以乙個無order b...