Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wybierz wiersz wraz z jego następnym i poprzednim wierszem

Jest to skomplikowane, ponieważ wybierasz wiersz według id , ale wybierając sąsiednie za pomocą innego pola, modified_time .

Pomysł polega na użyciu zmiennych do wyliczania wierszy. Użyj innego wiersza, aby obliczyć wartość dla id na których Ci zależy. Zrób to w podzapytaniu, a następnie wybierz żądane wiersze:

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. Zapytanie, aby uzyskać najniższą wartość, która jest większa od zera, a nie jest NULL

  2. Jak wstawić javascript do bazy mysql?

  3. Słowo kluczowe LIMIT na MySQL z przygotowaną instrukcją

  4. FORCE INDEX w MySQL - gdzie go umieścić?

  5. MySQL EXPLAIN 'typ' zmienia się z 'zakres' na 'ref' po zmianie daty w instrukcji where?