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

Odwoływanie się do wartości następnego i poprzedniego wiersza

Załóżmy, że istnieje unikalna kolumna identyfikatora i żeby było ciekawiej, że nie śledzi ona wzrostu w kolumnie sygnatury czasowej. Załóż również, że nie ma równych sygnatur czasowych.

select pt.* from
(Select max(ptime) as prevtime,min(ntime) as nextime from
((Select timestamp as ptime) as prev,
(Select timestamp as ntime) as next
where prev.ptime < next.ntime and prev.id<>next.id) as s1 group by ptime, ntime) as pn
inner join 
t as pt on pn.prevtime=pt.timestamp inner join 
t as nt on pn.nexttime=nt.timestamp
where pt.ncol!=nt.ncol;

Objaśnienie:s1 udostępnia pary czasów, które występują przed i po sobie. pn grupuje je, aby uzyskać listę wszystkich sąsiednich par czasów. pt dostarcza pozostałe kolumny dla poprzedniego czasu w pn, a nt dostarcza pozostałe kolumny dla następnego razu. Kiedy kolumna, którą nazwałem ncol, zmienia wartości, poprzedni wiersz zostaje wyrzucony do zestawu wyników. Jeśli istnieje wiele wartości niepustych i tylko interesujące było znalezienie przełączników między wartościami null i niepustymi, zmień pt.ncol!=nt.ncol na isnull(pt.ncol)!=isnull(nt.ncol).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Parametr thread_stack serwera MySQL - co to jest? Jak duży powinien być?

  2. Błąd składni spowodowany użyciem zastrzeżonego słowa jako nazwy tabeli lub kolumny w MySQL

  3. SQL:Powtórz wiersz wyniku wiele razy i ponumeruj wiersze

  4. Mysql zmienia sortowanie kolumn i zestaw znaków schematu informacji

  5. Paginacja MySQL oparta na kursorach z wieloma kolumnami