Mysql
 sql >> Database >  >> RDS >> Mysql

ORDER BY separatamente i numeri positivi e negativi nell'istruzione MySQL

Può usare SIGN per ordinare i numeri positivi in ​​alto, quindi prendi il valore assoluto con ABS per ottenere l'ASC/DESC desiderato.

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

MODIFICA

Come ha sottolineato Nahuel, quanto sopra ordinerà gli 0 a metà tra positivo e negativo. Per raggrupparli invece con i positivi, puoi utilizzare un CASE invece (o, se la tua colonna è solo numeri interi, il leggermente magico SIGN(col + 1) )

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