sql >> Databasteknik >  >> RDS >> Mysql

Välj en rad tillsammans med dess nästa och föregående rad

Detta är komplicerat eftersom du väljer en rad med id , men att välja de intilliggande efter ett annat fält, modified_time .

Tanken är att använda variabler för att räkna upp raderna. Och använd en annan rad för att beräkna värdet för id som du bryr dig om. Gör detta i en underfråga och välj sedan de rader du vill ha:

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)


  1. Inkludera nullresultat i group_concat

  2. Hur man genererar Add Column Statement för alla tabeller i en databas i SQL Server - SQL Server / T-SQL Tutorial Del 49

  3. återställ rader till standardkolumnvärdet mysql

  4. MySQL flerkolumns primärnyckel