我有10行,其中'passion_level'列有负值和正值:
-3 5 8 9 -11 0 3 1 10 -8
如果我运行查询SELECT * FROM table ORDER BY passion_level DESC
,我会按照您的预期得到数字,从高到低,列表底部有负数。但是我们如何让mysql订购一个有符号整数的列而忽略符号(将负数视为正数),这样我们就得到了按此顺序返回的行:
-11 10 9 8 -8 5 -3 3 1 0
答案 0 :(得分:1)
您可以使用ABS
。它将返回绝对值:
mysql> SELECT ABS(2); -> 2 mysql> SELECT ABS(-32); -> 32
SELECT columnList FROM table ORDER BY ABS(passion_level) DESC
答案 1 :(得分:1)
尝试创建一个新列并使用ABS(),然后根据新列desc重新排序
SELECT *,ABS(passion_level) as order FROM table ORDER BY ABS(passion_level) DESC
答案 2 :(得分:1)
SELECT *
FROM table
ORDER BY abs(passion_level) DESC