sql >> Base de Datos >  >> RDS >> Mysql

ORDENAR POR números positivos y negativos por separado en la declaración de MySQL

Puede usar SIGN para ordenar los números positivos en la parte superior, luego tome el valor absoluto con ABS para obtener el ASC/DESC deseado.

SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)

EDITAR

Como señaló Nahuel, lo anterior clasificará los 0 en el medio entre positivo y negativo. Para agruparlos con los positivos, puedes usar un CASE en su lugar (o, si su columna es solo números enteros, el levemente mágico SIGN(col + 1) )

SELECT * FROM theTable
ORDER BY 
    CASE WHEN col >= 0 THEN 1 ELSE 2 END,
    ABS(col)