MySQL自定義排序規則

2021-08-28 03:34:09 字數 1424 閱讀 1349

有三個函式(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...