Kan använda SIGN för att sortera de positiva talen till toppen, ta sedan det absoluta värdet med ABS för att få önskad ASC/DESC.
SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)
REDIGERA
Som Nahuel påpekade kommer ovanstående att sortera nollor till mitten mellan positiva och negativa. För att istället gruppera dem med de positiva, kan du använda en CASE
istället (eller, om din kolumn bara är heltal, den något magiska SIGN(col + 1)
)
SELECT * FROM theTable
ORDER BY
CASE WHEN col >= 0 THEN 1 ELSE 2 END,
ABS(col)