sql >> Databáze >  >> RDS >> Mysql

Vyberte řádek spolu s jeho následujícími a předchozími řádky

To je složité, protože vybíráte řádek podle id , ale výběrem sousedních v jiném poli, modified_time .

Cílem je použít proměnné k výčtu řádků. A použijte další řádek k výpočtu hodnoty pro id na kterých ti záleží. Proveďte to v dílčím dotazu a potom vyberte požadované řádky:

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. Použijte prostorová rozšíření MySQL k výběru bodů uvnitř kruhu

  2. Dynamický přístup ke kurzoru podle názvu sloupce

  3. Jak číst více sad výsledků vrácených z uložené procedury serveru SQL Server v R

  4. Perl a XPath:chybějící položky v tabulce databáze