Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Referensi nilai baris berikutnya dan sebelumnya

Asumsikan ada kolom id unik dan untuk membuat hal-hal menarik tidak melacak peningkatan kolom cap waktu. Juga asumsikan bahwa tidak ada stempel waktu yang sama.

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;

Penjelasan:s1 menyediakan pasangan waktu yang sebelum dan sesudah satu sama lain. pn mengelompokkan mereka untuk mendapatkan daftar semua pasangan waktu yang berdekatan. pt menyediakan sisa kolom untuk waktu sebelumnya di pn, dan nt menyediakan sisa kolom untuk waktu berikutnya. Ketika kolom yang saya beri nama ncol mengganti nilai, baris sebelumnya dimuntahkan ke dalam hasil. Jika ada beberapa nilai nonnull dan hanya menarik untuk menemukan peralihan antara null dan non-null, maka ubah pt.ncol!=nt.ncol menjadi 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. bagaimana memahami tidak dapat menghubungkan pesan kesalahan mysql?

  2. MySQL:bigint Vs int

  3. PERINGATAN:Membuat koneksi SSL tanpa verifikasi identitas server tidak disarankan

  4. Hubungan banyak-ke-banyak MySQL dengan KUNCI ASING

  5. Permintaan MySQL untuk menggabungkan dan mencari dalam 2 tabel