2010-11-12 21 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的顺序,做一个极限x-1,1来获得前一个,但这似乎很糟糕。

我确定我错过了一些明显的东西,但我的头疼。

想法?

+0

那岂不是更容易阅读整表格变成链接列表,然后将下一个和上一个项目添加到您的另一个项目中? – Tarski 2010-11-12 11:09:24

+0

看看我以前的类似问题的答案:http://stackoverflow.com/questions/1259458/sql-pulling-a-row-for-next-or-pre- ow-row-of-a-current-row/2827609#2827609 – Mike 2010-11-12 12:04:00

回答

0

这里是最干净,最有效的方法:要获得下一 :

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

要获得以前:

select max(name) people where name < 'Dog';