MySQL order by 語句對null值排序

2021-10-25 10:09:14 字數 974 閱讀 8984

今天在寫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 子句而無需做額外的排序...