Lau*_*llo 4 mysql sql sql-order-by
我有一个MySQL表,并希望按此顺序返回基于列值的行:
例如0,2,4,7,-2,-3,-5
Bor*_*ort 10
可以使用SIGN将正数排序到顶部,然后使用ABS获取绝对值以获得所需的ASC/DESC.
SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)
Run Code Online (Sandbox Code Playgroud)
编辑
正如Nahuel指出的那样,上面将把0分为正负两个中间.要用积极的方式对它们进行分组,你可以使用a CASE(或者,如果你的列只是整数,那就是有点神奇SIGN(col + 1))
SELECT * FROM theTable
ORDER BY
CASE WHEN col >= 0 THEN 1 ELSE 2 END,
ABS(col)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3502 次 |
| 最近记录: |