首页  >  问答  >  正文

有没有简单的方法来获取那些价值与其他记录不同的记录

所以,我的数据库中有记录:

id 日期时间 姓名 级别
0 2022-03-22 23:18:01 约翰 615
1 2022-03-22 23:17:01 约翰 616
2 2022-03-22 23:16:02 约翰 616
3 2022-03-22 23:15:01 约翰 616
4 2022-03-22 23:14:01 约翰 617
5 2022-03-22 23:13:01 约翰 617
6 2022-03-22 23:12:01 约翰 616
7 2022-03-22 23:11:01 约翰 617
8 2022-03-22 23:10:02 约翰 618
9 2022-03-22 23:09:01 约翰 618

结果我想获得这些值,其中下一个“lvl”与上一个“lvl”不同。 我的意思是,我想获取带有 id 的结果记录:

0 - 因为它是第一个,

1 - 因为lvl不等于0,

2,3 - 跳过,因为lvl与1相同

4 - 因为 lvl 与 1 不同,

5 - 跳过,因为 lvl 与 4 相同,

6 - 因为等级与 5 不同,

7 - 因为等级与 6 不同,

8 - 因为等级与 7 不同,

9 - 跳过。

P粉163951336P粉163951336179 天前326

全部回复(1)我来回复

  • 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;

    示例小提琴

    回复
    0
  • 取消回复