How to order by maximum of two column which can be null in MySQL? How to order by maximum of two column which can be null in MySQL? sql sql

How to order by maximum of two column which can be null in MySQL?


If you know that salaryplus will always be greater than salaryminus, then you can do

order by coalesce(salaryplus, salaryminus, 0)

coalesce will return the first value which is not null, or (in this example) 0, if both values are null.

Otherwise, do something like this:

order by greatest(ifnull(salaryminus,0), ifnull(salaryplus,0))

This will treat both salaryminus and salaryplus as 0 if they are null, and will order by the larger of the two.


You can use coalesce to turn possibly-null columns into specific values instead -- e.g., coalesce(salaryminus, -99999999) will give a large negative number if salaryminus is null, but will return salaryminus if not null.