sql >> Database teknologi >  >> RDS >> Mysql

Vælg en række sammen med dens næste og forrige række

Dette er kompliceret, fordi du vælger en række efter id , men ved at vælge de tilstødende ved et andet felt, modified_time .

Ideen er at bruge variabler til at opregne rækkerne. Og brug en anden række til at beregne værdien for id som du holder af. Gør dette i en underforespørgsel, og vælg derefter de rækker, du ønsker:

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. Bedste metode til at gemme en liste over bruger-id'er

  2. Understøtter JPA 2.0 SQL Server tabelvariabler?

  3. Hvordan konverteres datetime-streng uden skilletegn i SQL Server som datetime?

  4. JDBC - vælg hvor kolonnen er NULL