码迷,mamicode.com
首页 > 数据库 > 详细

MySQL中order by排序时,数据存在null咋办

时间:2017-04-08 21:26:21      阅读:243      评论:0      收藏:0      [点我收藏+]

标签:实现   就会   效果   利用   rac   操作   tab   常用   技巧   

order by排序是最常用的功能,但是排序有时会遇到数据为空null的情况,这样排序就会乱了,这里以MySQL为例,记录我遇到的问题和解决思路。

问题:

网页要实现table的行鼠标拖拽排序,我用AngularJs集成了一个TableDnD开源插件,可以实现,然后在数据库表中增加一个排序字段indexId,但是原来的大量数据是没有排序过的,所以该字段为null。

这样order by时,为null的数据就会排在最前边。

写个测试表模拟一下,如下效果:

技术分享

解决办法:

  • 最优办法:利用MySQL中的一个小技巧,在字段前面加上一个负号,也就是减号,ASC改成DESC ,DESC改成ASC

技术分享

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

技术分享

  • 直接利用isnull函数对age列求值,跟第一种方法的道理是一样的

技术分享

方法同样试用SQL Server和Oracle等数据库

MySQL中order by排序时,数据存在null咋办

标签:实现   就会   效果   利用   rac   操作   tab   常用   技巧   

原文地址:http://www.cnblogs.com/renxing123/p/6683005.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!