MySQL命令忽略有符号的数字

时间:2012-09-19 17:02:46

标签: mysql

我有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

3 个答案:

答案 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