Gibt es eine einfache Möglichkeit, Datensätze abzurufen, deren Wert sich von anderen Datensätzen unterscheidet?
P粉163951336
P粉163951336 2024-04-04 21:59:30
0
1
397

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

Antworte allen(1)
P粉164942791

这似乎非常适合 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;

示例小提琴

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage