Rumah  >  Soal Jawab  >  teks badan

Adakah terdapat cara mudah untuk mendapatkan rekod yang nilainya berbeza daripada rekod lain

Jadi, saya mempunyai rekod dalam pangkalan data saya:

id Masa tarikh Nama Peringkat
0 2022-03-22 23:18:01 John 615
1 2022-03-22 23:17:01 John 616
2 2022-03-22 23:16:02 John 616
3 2022-03-22 23:15:01 John 616
4 2022-03-22 23:14:01 John 617
5 2022-03-22 23:13:01 John 617
6 2022-03-22 23:12:01 John 616
7 2022-03-22 23:11:01 John 617
8 2022-03-22 23:10:02 John 618
9 2022-03-22 23:09:01 John 618

Hasilnya saya ingin mendapatkan nilai ini di mana "lvl" seterusnya berbeza daripada "lvl" sebelumnya. Maksud saya, saya ingin mendapatkan rekod keputusan dengan id:

0 - kerana ia yang pertama,

1 - kerana lvl tidak sama dengan 0,

2,3 - skip sebab lvl sama dengan 1

4 - kerana lvl berbeza daripada 1,

5 - dilangkau kerana lvl sama dengan 4,

6 - Sebab level berbeza dari 5,

7 - Sebab level berbeza dari 6,

8 - Sebab level berbeza dari 7,

9 - Langkau.

P粉163951336P粉163951336179 hari yang lalu324

membalas semua(1)saya akan balas

  • P粉164942791

    P粉1649427912024-04-05 16:08:06

    Ini nampaknya sesuai untuk lag fungsi analitik (menggunakan MySQL 8+):

    with keep as (
      select *, if(id=Min(id) over() or level != lag(level) over(order by id), 1, 0) keepme
      from t
    )
    select id
    from keep
    where keepme=1;

    Contoh Biola

    balas
    0
  • Batalbalas