sql 如何优先显示不为空的字段 并进行排序
【Oracle 结论】 order by colum asc 时,null默认被放在最后 order by colum desc 时,null默认被放在最前 nulls first 时,强制null放在最前,不为null的按声明顺序[asc|desc]进行排序 nulls last 时,强制null放在最后,不为null的按声明顺序[asc|desc]进行排序 【MySql 结论】 order by colum asc 时,null默认被放在最前 order by colum desc 时,null默认被放在最后 ORDER BY IF(ISNULL(update_date),0,1) null被强制放在最前,不为null的按声明顺序[asc|desc]进行排序 ORDER BY IF(ISNULL(update_date),1,0) null被强制放在最后,不为null的按声明顺序[asc|desc]进行排序
注:以上结果是在oracle11g及mysql5下的测试结果。
因此当我们在order by时,为了强制说明对于null的排序顺序就必须使用到:
针对【oracle】我们就需要使用以下语法:
order by order_col [asc|desc] nulls [first|last]
而针对【mysql】我们则需要使用以下语法:
order by IF(ISNULL(my_field),1,0),my_field;