2013-06-14 4 views
1

У меня есть простой вопрос. В MySQL рассмотрим строку «n», как мы можем упорядочить строки по id (например), но начинаем с строки «n + 1» и заканчиваем строку «n-1»?Данные заказа SQL из строки «n + 1» в «n-1»

Спасибо!

EDIT: Я прошу точно указать, что я ищу запрос в MySQL.

Из ответа ниже, вот пример:

ID 
--- 
1 
2 
3 
4 <--N 
5 
6 

Я хочу желаемых результатов упорядоченные следующим образом

5 <--N + 1 
6 
1 
2 
3 <--N - 1 
+2

Выборочные данные и желаемые результаты? Кроме того, какая RDBMS, поскольку могут быть более быстрые решения, специфичные для поставщиков. – sgeddes

+0

Вы имеете в виду, что вам нужно всего 3 строки в результате (n + 1, n, n - 1)? –

ответ

1

Таким образом, вы имеете в виду. Для таблицы

ID 
--- 
1 
2 
3 
4 <--N 
5 
6 

Вы хотите, чтобы нужный результат был заказан следующим образом?

5 <--N + 1 
6 
1 
2 
3 <--N - 1 

Если так

SELECT ID 
FROM T 
WHERE ID <> 4 
ORDER BY CASE WHEN ID > 4 THEN 0 ELSE 1 END, ID 
+0

Спасибо за ваш ответ. Вы также понимали мое требование. Но я не говорю, что ищу запрос для MySQL. Я редактирую свой вопрос. –

+0

@MehdiChamouma - Этот ответ является стандартным SQL и работает в MySQL. [SQL Fiddle] (http://www.sqlfiddle.com/#!2/1d9bc/1) –

+0

Моя ошибка. Мне нужно это для Doctrine2 (в DQL), а аргумент Case недоступен. Поэтому я отправлю запрос на более конкретный запрос. Спасибо большое ! –

-1

Вы спрашиваете, как сортировать по убыванию?

Просто придерживайтесь

ORDER BY col a , col b DESC; 

в конце

+0

Не отвечает на вопрос ОП. –

0

Предполагая таблицу MyTable с целочисленного столбца N:

SELECT * 
from MyTable 
where Id between N-1 and N+1 
order by N desc 
Смежные вопросы