有没有简单的方法来获取那些价值与其他记录不同的记录
P粉163951336
P粉163951336 2024-04-04 21:59:30
0
1
315

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

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

全部回复(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;

示例小提琴

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!