2013-11-23 49 views
2

比方說,我們有一個這樣的表ORDER BY距離爲另一個值

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 

回答

4

您可以使用:

SELECT * FROM table ORDER BY abs(value - 30) ASC 
+0

修復程序以SLECT * FROM表ORDER BY ABS(值 - 30)ASC和我將接受) – Benedictus

+0

完成。對不起,我正在看你的代碼,而不是例子。 :) – Paul92

1

不知道,所有的SQL方言接受Paul92的答案。

下面是另一種解決方案:

SELECT * 
FROM (
    SELECT 
     t.*, 
     abs(value - 30) AS abs_value 
    FROM table t 
) temp 
ORDER BY abs_value 
+0

這看起來不錯,但更短的一個在mySql上爲我做了訣竅 – Benedictus

相關問題