Mysql
 sql >> Datenbank >  >> RDS >> Mysql

ORDER BY getrennt positive und negative Zahlen in der MySQL-Anweisung

Kann SIGN verwenden Um die positiven Zahlen nach oben zu sortieren, nehmen Sie den absoluten Wert mit ABS um das gewünschte ASC/DESC zu erhalten.

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

BEARBEITEN

Wie Nahuel betonte, sortiert das obige 0 in die Mitte zwischen positiv und negativ. Um sie stattdessen mit den Positiven zu gruppieren, können Sie einen CASE verwenden stattdessen (oder, wenn Ihre Spalte nur Ganzzahlen enthält, das leicht magische SIGN(col + 1) )

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