2010-11-12 4 views
1

Вполне возможно, что это очень легко, и это только пятничные проблемы мозга, но я изо всех сил здесь ...MySQL Следующий/Предыдущий По алфавиту Роу

У меня есть таблица MySQL, который содержит текстовые данные, такие как:

Elephant 
Apple 
Dog 
Carrot 
Banana 

Я тяну один ряд, т.е. Собака. Теперь я хочу, чтобы вытащить предыдущий алфавитный строку и следующую строку в алфавитном порядке, то есть морковь & слон

Так ..

SELECT text FROM table WHERE text >= 'Dog' ORDER BY text LIMIT 1 

дает мне следующий алфавитный ряд. Однако

SELECT text FROM table WHERE text <= 'Dog' ORDER BY text LIMIT 1 

, возможно, очевидно, дает мне первый алфавитный ряд таблицы. Я решил, что смогу получить таблицу, а затем заказать alpahbetically и сделать LIMIT x-1,1, чтобы получить предыдущий, но это кажется ужасным неуклюжим.

Уверен, что мне не хватает чего-то очевидного, но у меня болит голова.

Идеи?

+0

не было бы легче читать весь таблицу во что-то похожее на связанный список, а затем получить следующий и предыдущий элемент для вашего афера? – Tarski

+0

Посмотрите на мой ответ на предыдущий аналогичный вопрос: http://stackoverflow.com/questions/1259458/sql-pulling-a-row-for-next-or-previous-row-of-a-current-row/2827609 # 2827609 – Mike

ответ

0

Здесь чистейший и самый эффективный способ: Чтобы получить следующий:

select min(name) people where name > 'Dog'; 

Чтобы получить предыдущий:

select max(name) people where name < 'Dog'; 
Смежные вопросы