如何选择不包含id的行周围的行

chi*_*iii 2 mysql select join

这里有很多关于选择匹配行的周围行的问题,这些行使用ID来完成这个技巧.这不是我需要的,因为我的桌子是单词,我需要用文字排序.

示例表:Word

id    word
1     boing
2     aleluya
3     chimp
4     dinner
5     after
6     zup
7     pop
8     house
9     chain
Run Code Online (Sandbox Code Playgroud)

假设我希望通过单词ASC排序的3个周围的"晚餐"行,我的结果应该是:

id    word
1     boing
9     chain
3     chimp
4     dinner
8     house
7     pop
6     zup
Run Code Online (Sandbox Code Playgroud)

我需要使用什么查询?我试过这个:

SELECT word FROM `word` t WHERE t.word <> 'dinner' 
ORDER BY abs( t.word - (SELECT t2.word  FROM word t2 WHERE t2.word = 'dinner'))
LIMIT 5
Run Code Online (Sandbox Code Playgroud)

这显然不起作用.

Fre*_*tka 8

SELECT t.id, t.word FROM word t 
WHERE t.word >= 
(
    SELECT lo.word FROM `word` lo 
    WHERE lo.word <= 'dinner' ORDER BY lo.word DESC LIMIT 3,1
)
ORDER BY t.word ASC LIMIT 0,7
;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴在这里

  • 这个查询比 Daniel +1 的查询运行得快得多 (2认同)