Dies ist kompliziert, da Sie eine Zeile nach id
auswählen , aber Auswahl der angrenzenden durch ein anderes Feld, modified_time
.
Die Idee ist, Variablen zu verwenden, um die Zeilen aufzuzählen. Verwenden Sie eine weitere Zeile, um den Wert für id
zu berechnen die dir wichtig sind. Tun Sie dies in einer Unterabfrage und wählen Sie dann die gewünschten Zeilen aus:
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)