Může použít SIGN chcete-li kladná čísla seřadit nahoru, vezměte absolutní hodnotu pomocí ABS pro získání požadovaného ASC/DESC.
SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)
UPRAVIT
Jak zdůraznil Nahuel, výše uvedené seřadí 0 do středu mezi kladnou a zápornou hodnotou. Chcete-li je místo toho seskupit s pozitivy, můžete použít CASE
místo toho (nebo, pokud je váš sloupec pouze celá čísla, lehce magický SIGN(col + 1)
)
SELECT * FROM theTable
ORDER BY
CASE WHEN col >= 0 THEN 1 ELSE 2 END,
ABS(col)