SQL how to make null values come last when sorting ascending SQL how to make null values come last when sorting ascending sql sql

SQL how to make null values come last when sorting ascending


select MyDatefrom MyTableorder by case when MyDate is null then 1 else 0 end, MyDate


(A "bit" late, but this hasn't been mentioned at all)

You didn't specify your DBMS.

In standard SQL (and most modern DBMS like Oracle, PostgreSQL, DB2, Firebird, Apache Derby, HSQLDB and H2) you can specify NULLS LAST or NULLS FIRST:

Use NULLS LAST to sort them to the end:

select *from some_tableorder by some_column DESC NULLS LAST


I also just stumbled across this and the following seems to do the trick for me, on MySQL and PostgreSQL:

ORDER BY date IS NULL, date DESC

as found at https://stackoverflow.com/a/7055259/496209