Maison > Questions et réponses > le corps du texte
J'ai donc l'enregistrement dans ma base de données :
id | Date heure | Nom | Niveau |
---|---|---|---|
0 | 2022-03-22 23:18:01 | Jean | 615 |
1 | 2022-03-22 23:17:01 | Jean | 616 |
2 | 2022-03-22 23:16:02 | Jean | 616 |
3 | 2022-03-22 23:15:01 | Jean | 616 |
4 | 2022-03-22 23:14:01 | Jean | 617 |
5 | 2022-03-22 23:13:01 | Jean | 617 |
6 | 2022-03-22 23:12:01 | Jean | 616 |
7 | 2022-03-22 23:11:01 | Jean | 617 |
8 | 2022-03-22 23:10:02 | Jean | 618 |
9 | 2022-03-22 23:09:01 | Jean | 618 |
En conséquence, je souhaite obtenir ces valeurs où le prochain "lvl" est différent du "lvl" précédent. Je veux dire, je veux obtenir l'enregistrement du résultat avec l'identifiant :
0 - parce que c'est le premier,
1 - parce que le niveau n'est pas égal à 0,
2,3 - ignoré car le niveau est le même que 1
4 - puisque le niveau est différent de 1,
5 - ignoré car le niveau est identique à 4,
6 - Parce que le niveau est différent du 5,
7 - Parce que le niveau est différent du 6,
8 - Parce que le niveau est différent du 7,
9 - Sauter.
P粉1649427912024-04-05 16:08:06
Cela semble être un bon choix pour lag
fonctions analytiques (utilisant 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;