Rumah > Soal Jawab > teks badan
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粉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;