ORDER BY到另一个值的距离

时间:2013-11-23 17:57:46

标签: sql sql-server tsql sql-order-by distance

假设我们有一张这样的表

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

2 个答案:

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