Maison  >  Questions et réponses  >  le corps du texte

Existe-t-il un moyen simple d'obtenir les enregistrements dont la valeur est différente des autres enregistrements

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粉163951336P粉163951336179 Il y a quelques jours330

répondre à tous(1)je répondrai

  • P粉164942791

    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;

    Exemple de violon

    répondre
    0
  • Annulerrépondre