Heim  >  Fragen und Antworten  >  Hauptteil

Gibt es eine einfache Möglichkeit, Datensätze abzurufen, deren Wert sich von anderen Datensätzen unterscheidet?

So, ich habe den Eintrag in meiner Datenbank:

id Datumszeit Name Level
0 22.03.2022 23:18:01 John 615
1 22.03.2022 23:17:01 John 616
2 22.03.2022 23:16:02 John 616
3 22.03.2022 23:15:01 John 616
4 22.03.2022 23:14:01 John 617
5 22.03.2022 23:13:01 John 617
6 22.03.2022 23:12:01 John 616
7 22.03.2022 23:11:01 John 617
8 22.03.2022 23:10:02 John 618
9 22.03.2022 23:09:01 John 618

Als Ergebnis möchte ich diese Werte erhalten, bei denen sich das nächste „lvl“ vom vorherigen „lvl“ unterscheidet. Ich meine, ich möchte den Ergebnisdatensatz mit der ID erhalten:

0 - weil es das erste ist,

1 - weil lvl nicht gleich 0 ist,

2,3 – übersprungen, da Level gleich 1 ist

4 – da sich Level von 1 unterscheidet,

5 – übersprungen, da Level mit 4 identisch ist,

6 – Weil sich das Level von 5 unterscheidet,

7 – Weil sich das Level von 6 unterscheidet,

8 – Weil sich das Level von 7 unterscheidet,

9 – Überspringen.

P粉163951336P粉163951336179 Tage vor328

Antworte allen(1)Ich werde antworten

  • P粉164942791

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

    这似乎非常适合 lag 分析函数(使用 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;

    示例小提琴

    Antwort
    0
  • StornierenAntwort