Kan SIGN gebruiken om de positieve getallen bovenaan te sorteren, neem dan de absolute waarde met ABS om de gewenste ASC/DESC te krijgen.
SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)
BEWERKEN
Zoals Nahuel opmerkte, sorteert het bovenstaande de nullen naar het midden tussen positief en negatief. Om ze in plaats daarvan te groeperen met de positieven, kunt u een CASE
. gebruiken in plaats daarvan (of, als uw kolom alleen gehele getallen is, de enigszins magische SIGN(col + 1)
)
SELECT * FROM theTable
ORDER BY
CASE WHEN col >= 0 THEN 1 ELSE 2 END,
ABS(col)