今天在寫sql中,遇到對 null 值進行排序的問題,發現在mysql中,null為最小值。
如果我們在排序欄位中,存在null的情況,那麼我們需要手動指定 null 的順序。
先看一下原始資料
查詢結果如下
(先按rank公升序,null放在最後,在對null值根據時間降序排列)
總結關鍵點在於if(isnull(欄位名),0,1),將該字段根據是否為null值分成兩個部分,null值相當於得到了隱藏的排序值0,非null值相當於得到了隱藏的排序值1,在排序時,先根據此隱藏的排序值進行排序,然後根據條件依次排序。if(isnull(rank), 0, 1) 相當於if(isnull(rank), 0, 1) asc,asc可省略不寫。反之,也是如此。
Mysql order by語句的優化
在某些情況中,mysql可以使用乙個索引來滿足order by子句,而不需要額外的排序。where條件和order by使用相同的索引,並且order by的順序和索引順序相同,並且order by的字段都是公升序或者都是降序。例如 下列sql可以使用索引。select from t1 order ...
MySQL Order by 語句用法與優化詳解
order by語句是用來排序的,經常我們會使用到order by來進行排序,下面我給大家來講講order by用法與優化排序,有需要的同學可參考 複製 如下 select column name s from table name order by column name 例子 sql建立 複製 ...
MySQL Order By索引優化
mysql order by索引優化 mysql可以直接使用索引來滿足乙個order by 子句而無需做額外的排序。儘管 order by 不是和索引的順序準確匹配,索引還是可以被用到。在一些情況下,mysql可以直接使用索引來滿足乙個 order by 或 group by 子句而無需做額外的排序...