mysql中欄位自定義排序

2021-04-29 23:21:59 字數 568 閱讀 7358

今天專案中遇到乙個對sql查詢結果需要按欄位  「自定義」  排序的問題。

如:預設是 0,1,2。結果為 1,0,2或 1,2,0;

mysql 中使用 field('field',....) 注:第乙個field為關鍵字,『field』 為要指定的字段。

select t.* from tbl_obj_order t order by field(status,2,3,1,0,-1)

select t.* from tbl_obj_order t where status in(-1,0,1,2,3) order by field(status,2,3,1,0,-1)

兩種方式的結果相同。

注意的問題:

1. 排序規則(字段可能的值)盡量寫全!!

當order by field(.......) 時,如果後面的排序字段沒有寫全(2,3,1,0)時:

a).如果查詢的結果裡 的資料中其字段  不包含  省略的值(-1),則結果 不 影響。

b).如果查詢的結果裡 的資料中其字段  包含      省略的值(-1),則結果 會 影響(預設的方式了)。

MySQL自定義查詢字段排序

同事在做 排名的時候有個問題 需要按照 一等獎二等獎 三等獎未中獎 的形式輸出資料 問到我如何排序。資料庫設計如下 用乙個prize code欄位標示了是否中獎 1是一等獎 2是二等獎 3是三等獎 0是未中獎 思考許久 本來開始想用union 寫出sql如下 select from select f...

MySQL 按指定字段自定義列表排序

問題描述 大家都知道,mysql 中按某欄位公升序排列的 sql 為 以 id 為例,下同 select from mytable where id in 1,7,3,5 order by id asc 降序排列的 sql 為 select from mytable where id in 1,7,...

MySQL 按指定字段自定義列表排序

大家都知道,mysql 中按某欄位公升序排列的 sql 為 以 id 為例,下同 select from mytable where id in 1,7,3,5 order by id asc 降序排列的 sql 為 select from mytable where id in 1,7,3,5 o...