我有 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
我有 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
您可以使用ABS
. 它将返回绝对值:
mysql> 选择 ABS(2); -> 2 mysql> 选择 ABS(-32); -> 32
SELECT columnList FROM table ORDER BY ABS(passion_level) DESC
尝试创建一个新列并使用 ABS(),然后根据新列 desc 重新排序
SELECT *,ABS(passion_level) as order FROM table ORDER BY ABS(passion_level) DESC
SELECT *
FROM table
ORDER BY abs(passion_level) DESC