有三個函式(order by field,order by instr,order by locate)
field函式
格式:field(value,str1,str2,str3,str4),value與str1、str2、str3、str4比較,返回1、2、3、4,如遇到null或者不在列表中的資料則返回0.
select * from user order by field(id,2,3,5,4) desc
結果顯示順序:4 5 3 2 1 6
id uname passwd
4 dd dd
5 ee ee
3 cc cc
2 bb bb
1 aa aa
6 ff ff
instr(欄位名, 字串)
這個函式返回字串在某乙個欄位的內容中的位置, 沒有找到字串返回0,否則返回位置(從1開始).
select * from user order by instr( 』2,3,5,4′, id ) asc
結果顯示順序:1 6 2 3 5 4
1 aa aa
6 ff ff
2 bb bb
3 cc cc
5 ee ee
4 dd dd
select * from user order by instr( 』2,3,5,4′, id ) desc
結果顯示順序:4 5 3 2 1 6
4 dd dd
5 ee ee
3 cc cc
2 bb bb
1 aa aa
6 ff ff
select * from user order by locate( id, 』2,3,5,4′ ) asc
結果顯示順序:1 6 2 3 5 4
1 aa aa
6 ff ff
2 bb bb
3 cc cc
5 ee ee
4 dd dd
select * from user order by locate( id, 』2,3,5,4′ ) desc
結果顯示順序:4 5 3 2 1 6
4 dd dd
5 ee ee
3 cc cc
2 bb bb
1 aa aa
6 ff ff
如我想要查詢的資料庫中的id順序首先是(2,3,5,4)然後在是其它的id順序,你首先要把他降序排即(4 5 3 2),然後在select * from user order by field(id,4,5,3,2) desc 或 select * from user order by instr( 』4,5,3,2′, id ) desc 或用 select * from user order by locate( id, 』4,5,3,2′ ) desc 就得到你想要的結果了。
mysql 按自定義的規則排序
有些時候取資料時的排序規則需要為自己的指定規則,如 1 3 2 0這種,所以需要在取資料時指定排序規則,具體方法如下 select user from user where user status in 0,1,2,3 order by field user status 1,0,2,3 這樣就可以...
MySQL自定義排序
select from table where id in 2,3,4,1,5 order by field id,2,3,4,1,5 select from table where id in 2,3,4,1,5 order by field id,2,3,4,1,5 asc select fro...
mysql自定義排序
1 mysql自定義排序,指定排序輸出 select case when ajj whcd then 未知 when ajj whcd in 初中 中學 then 初中 when ajj whcd in 中專 中技 中專 中技 中師 技工 技校 普高 職專 職中 高中 高中?then 高中 when...