यह जटिल है, क्योंकि आप 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)