MySQL中order by排序時,數據存在null咋辦


order by排序是最常用的功能,但是排序有時會遇到數據為空null的情況,這樣排序就會亂了,這里以MySQL為例,記錄我遇到的問題和解決思路。

問題:

網頁要實現table的行鼠標拖拽排序,我用AngularJs集成了一個TableDnD開源插件,可以實現,然后在數據庫表中增加一個排序字段indexId,但是原來的大量數據是沒有排序過的,所以該字段為null。

這樣order by時,為null的數據就會排在最前邊。

寫個測試表模擬一下,如下效果:

MySQL中order by排序時,數據存在null咋辦

解決辦法:

  • 最優辦法:利用MySQL中的一個小技巧,在字段前面加上一個負號,也就是減號,ASC改成DESC ,DESC改成ASC

MySQL中order by排序時,數據存在null咋辦

  • 重新生成一列,比如agenull,利用is null操作符,把NULL值的行變成1,非NULL值的行變成0,先對該字段排序,再對age排序

MySQL中order by排序時,數據存在null咋辦

  • 直接利用isnull函數對age列求值,跟第一種方法的道理是一樣的

MySQL中order by排序時,數據存在null咋辦

方法同樣試用SQL Server和Oracle等數據庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM