sql >> Database >  >> RDS >> Mysql

Selecteer een rij samen met de volgende en vorige rijen

Dit is ingewikkeld, omdat u een rij selecteert op id , maar de aangrenzende kiezen door een ander veld, modified_time .

Het idee is om variabelen te gebruiken om de rijen op te sommen. En gebruik een andere rij om de waarde voor de id . te berekenen waar je om geeft. Doe dit in een subquery en selecteer vervolgens de gewenste rijen:

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. LIMIT 1 gebruiken in MySQL

  2. Importeer MySQL-dump naar PostgreSQL-database

  3. Hoe DELETE-statements in PL/SQL genereren op basis van de tabellen FK-relaties?

  4. Hoe SQLite Quote() werkt