1

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

3 回答 3

1

您可以使用ABS. 它将返回绝对值:

mysql> 选择 ABS(2);
        -> 2
mysql> 选择 ABS(-32);
        -> 32
SELECT columnList FROM table ORDER BY ABS(passion_level) DESC
于 2012-09-19T17:05:26.357 回答
1

尝试创建一个新列并使用 ABS(),然后根据新列 desc 重新排序

SELECT *,ABS(passion_level) as order FROM table ORDER BY ABS(passion_level) DESC
于 2012-09-19T17:05:49.773 回答
1
SELECT * 
FROM table 
ORDER BY abs(passion_level) DESC
于 2012-09-19T17:05:57.097 回答