问题点:缺省解决 Oracle 在 Order by 时缺省认为 null 是最大值,所以如果是 ASC 升序则排在最初,DESC 降序则排在最前
解决方案:
应用 nulls first 或者 nulls last 语法
Nulls first 和 nulls last 是 Oracle Order by 反对的语法
如果 Order by 中指定了表达式 Nulls first 则示意 null 值的记录将排在最前 (不论是 asc 还是 desc)
如果 Order by 中指定了表达式 Nulls last 则示意 null 值的记录将排在最初 (不论是 asc 还是 desc)
-- 将 nulls 始终放在最初
select * from user where age > 18 order by birthday desc nulls last;
-- 将 nulls 始终放在最前
select * from user where age > 18 order by birthday nulls first