Mysql
 sql >> база данни >  >> RDS >> Mysql

Изберете ред заедно със следващия и предишния му ред

Това е сложно, защото избирате ред по 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)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql Изберете от Избор

  2. MySQL:Проверете дали потребителят съществува и го пуснете

  3. Mysql:изтриване на редове в две таблици с външни ключове

  4. Първите три групи с най-високи оценки трябва да имат конкретни точки 5,3,1

  5. Не можа да се зареди исканият клас:com.mysql.jdbc.Driver на JBoss с помощта на HIbernate