id
で行を選択しているため、これは複雑です。 、ただし、別のフィールドmodified_time
で隣接するフィールドを選択します 。
アイデアは、変数を使用して行を列挙することです。そして、別の行を使用してid
の値を計算します あなたが気にかけていること。サブクエリでこれを実行してから、必要な行を選択します。
SELECT t.*
FROM (SELECT `id`,
@rn := if(@rnid := if(t.id = '".id."', @rn + 1, @rnid),
@rn + 1, @rn + 1
) as rn
FROM {#table} t
"other_part_of_query" cross join
(select @rn := 0, @rnid := 0) vars
ORDER BY `modified_time` DESC
) t
WHERE rn in (@rnid - 1, @rnid, @rn)