Adakah terdapat cara mudah untuk mendapatkan rekod yang nilainya berbeza daripada rekod lain
P粉163951336
P粉163951336 2024-04-04 21:59:30
0
1
399

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粉163951336
P粉163951336

membalas semua(1)
P粉164942791

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

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan