gpt4 book ai didi

mysql - 如何通过mysql获取时间序列

转载 作者:行者123 更新时间:2023-11-29 11:23:56 27 4
gpt4 key购买 nike

在我的表中有一个 id 列、一个日期列和一个状态列,如下所示:

ID    DATE    STATUS
1 0106 A
1 0107 A
1 0112 A
1 0130 B
1 0201 A
2 0102 C
2 0107 C

我想获取每个 ID 的时间序列。也就是说,如果在相邻的时间内某个id处于相同的状态,那么前面的id将被忽略。查询结果如下:

ID    DATE    STATUS
1 0112 A
1 0130 B
1 0201 A
2 0107 C

如何通过MySQL实现?

最佳答案

您必须使用变量来执行此操作:

select `id`, `date`, `status`
from (
select *, @rowno:=if(@grp = `STATUS`, @rowno + 1 , 1) as rowno, @grp := `STATUS`
from yourtable
cross join (select @grp := null, @rowno := 0) t
order by `id`, `date` desc
) t1
where rowno = 1
order by `id`, `date`

SqlFiddle Demo

关于mysql - 如何通过mysql获取时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38521510/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com