同事在做抽獎排名的時候有個問題 需要按照
一等獎
二等獎
三等獎
未中獎
的形式輸出數據
問到我如何排序。
數據庫設計如下 用一個prize_code字段標示了是否中獎 1是一等獎 2是二等獎 3是三等獎 0是未中獎
思考許久 本來開始想用union 寫出SQL如下
select * from (SELECT * FROM data where prize_code>0 order by prize_code asc) as tmp UNION select * from data where prize_code=0;
查詢結果如下:
然后同事覺得太復雜 不好理解 ,后來我說提供用分兩次查詢的方式交給php處理排序 ,然后他說 那樣不利於分頁 而且邏輯復雜了,於是我想到不如自定義排序
最終解決如下:
SELECT * FROM data order by field(prize_code,1,2,3,0);
查詢結果如下: