MySQL Order поле года по ближайшему совпадению - PullRequest
1 голос
/ 04 июля 2011

Я пытаюсь упорядочить некоторые даты, чтобы они были перечислены в определенном порядке, ближайшем к указанной дате:

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 ]

4 голосов
/ 04 июля 2011

Я что-то упустил?Разве это не просто:

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

Тогда для редактирования, я думаю ...

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

Я думаю, что это будет работать

2 голосов
/ 04 июля 2011

Это должно решить вашу проблему.

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