SIGN を使用できます 正の数を上に並べ替えるには、絶対値を ABS 目的のASC/DESCを取得します。
SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)
編集
Nahuelが指摘したように、上記は0を正と負の中間にソートします。代わりに、それらをポジティブでグループ化するには、CASE
を使用できます。 代わりに(または、列が整数のみの場合は、少し魔法のようなSIGN(col + 1)
)
SELECT * FROM theTable
ORDER BY
CASE WHEN col >= 0 THEN 1 ELSE 2 END,
ABS(col)