一、在实际的工作中,经常使用到根据表字段进行排序,多数情况下,是根据表primary key进行排序。但是呢,有时会根据更新时间(update_time)进行排序。如下面SQL:
SELECT * FROM
temp_product tp
ORDER BY tp.combine_update_time DESC
二、如果tp.combine_update_time 都是非null的值,上述sql能够满足业务要求。但是如果存在null的值,则会发现,上述sql会把值为 null 的记录排在结果集前面,很显然这不是我们期望的结果。
三、解决问题的方案是:null lasts 关键字。sql如下:
SELECT *
FROM TEMP_PRODUCT TP
ORDER BY TP.COMBINE_UPDATE_TIME DESC NULLS LAST
总结:如果期望值为 null 的记录排在结果集前面,可以使用 null first。
参考资料:http://www.juyimeng.com/oracle-nulls-first-and-nulls-last.html