MySQL订单年份字段按最接近的匹配

时间:2011-07-03 20:01:39

标签: mysql sql sql-order-by

我正在尝试订购一些日期,以便按最接近指定日期的特定顺序列出:

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

答案 0 :(得分:4)

我错过了什么吗?不只是:

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

然后编辑我猜...

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

我认为这会起作用

答案 1 :(得分:2)

这可以解决您的问题。

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