假设我们有一张这样的表
id|value
--------
1 | 50
2 | 19
3 | 100
4 | 21
5 | -10
如何使用ORDER BY
运算符按值与另一个值的距离对值进行排序?
SELECT * FROM table ORDER BY nearest(value,30) DESC
要获得此表:
id|value
--------
4 | 21
1 | 50
2 | 19
5 | -10
3 | 100
答案 0 :(得分:4)
您可以使用:
SELECT * FROM table ORDER BY abs(value - 30) ASC
答案 1 :(得分:1)
不确定所有sql方言都接受Paul92的答案。
这是另一种解决方案:
SELECT *
FROM (
SELECT
t.*,
abs(value - 30) AS abs_value
FROM table t
) temp
ORDER BY abs_value