我正在尝试订购一些日期,以便按最接近指定日期的特定顺序列出:
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
我希望它能返回所有日期,但列表中最相关(最接近)的日期。
对不起,我已经修改了我的问题,以便更清楚地说明我想要实现的目标。
答案 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