Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wählen Sie eine Zeile zusammen mit der nächsten und vorherigen Zeile aus

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)