2011-07-03 106 views
1

我試圖讓他們在最接近指定日期的特定順序列出訂購一些日期mysql命令年字段:由最接近的匹配

id year 
--------- 
1 2010 
2 2011 
3 1992 
4 1996 
5 1987 
6 1988 

結果應該像(如果我指定1992年作爲一年訂購):

id year 
--------- 

3 1992 
4 1996 <4 away 
5 1987 <5 away 
6 1988 <6 away 
1 2010 <8 away 
2 2011 <9 away 

我想它,讓它返回所有日期,但最相關(最近)在列表的首位。

對不起,我修改了我的問題,使其更清楚我試圖達到什麼。

+2

你的結果集是什麼樣的? – CResults

+2

從這個問題來看,你似乎只想'ORDER BY year'。那怎麼辦? –

+2

從我理解你需要SELECT * FROM表WHERE year> ='1992'ORDER BY year;但是你不會問這個問題是否很簡單;) –

回答

2

這應該解決您的問題。

SELECT * 
FROM `table` 
ORDER BY ABS(1992-`year`) ASC 
+0

不必要的,如果因爲使用'ABS'函數而存在(或包含)'year'字段時不太可能使用索引。 –

4

我錯過了什麼嗎?是不是隻是:

SELECT * 
FROM table 
WHERE year >= '1992' 
ORDER BY year ASC 

然後編輯我猜...

SELECT *, ABS(year - 1992) 
FROM table 
ORDER BY ABS(year-1992) ASC 

我認爲,將工作

+0

第二個例子是不必要的,如果因爲使用'ABS'函數而存在(或包含)'year'字段時不太可能使用索引。 –