これは可能かどうかわかりません。そのため、現在はグループからすべてを選択し、結果を配列に入れてスライスしています。しかし、ここでは例のテーブルがあります:MySQL:名前に近い範囲を選択
id - groupid - item
1 - 1 - red
2 - 1 - blue
3 - 1 - green
4 - 2 - strawberries
5 - 2 - grapes
6 - 2 - oranges
7 - 1 - purple
8 - 1 - black
9 - 2 - apples
など。
にはどうすればアイテムに基づいてグループから3件の結果を得ることができるだろうか?アイテムそのものと同様に、1つ前、1つ後、アルファベット順に表示されます。
だから:
select t.*, max(tr.item) prevItem, min(tl.item) nextItem
from t
left join t tl on t.groupid = tl.groupid and t.item < tl.item
left join t tr on t.groupid = tr.groupid and t.item > tr.item
group by t.id, t.groupid, t.item
order by t.groupid, t.item;
MySQL Fiddle Demo:私はあなたがこのようなクエリを使用することができると思う
2 - blue
3 - green
7 - purple