今天專案中遇到乙個對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...