gpt4 book ai didi

mysql - 当开始和结束位于不同的行和列时,合并不同 ID 的日期

转载 作者:行者123 更新时间:2023-11-29 09:33:21 24 4
gpt4 key购买 nike

我有一张表,其中一个人有几行不同的 session ,并带有开始日期和结束日期。第一行中的结束日期可以与下一行中的开始日期相同,因此我想将它们合并到一行中,因为 session 实际上仍在继续。我使用 MySQL,但版本 5.7 和升级以使用更高版本是不可能的。

这是我所拥有的示例:****编辑同一用户有多个 session 的示例:

create table dates (USER_ID varchar(100),
start datetime,
end datetime);

insert into dates values ('1','2014-06-01','2014-07-01');
insert into dates values ('1','2014-07-01','2014-08-01');
insert into dates values ('1','2014-08-01','2014-09-01');
insert into dates values ('2','2014-07-01','2014-08-01');
insert into dates values ('2','2014-08-01','2014-09-01');
insert into dates values ('2','2014-10-01','2014-11-01');

+---------+---------------------+---------------------+
| USER_ID | start | end |
+---------+---------------------+---------------------+
| 1 | 2014-06-01 00:00:00 | 2014-07-01 00:00:00 |
| 1 | 2014-07-01 00:00:00 | 2014-08-01 00:00:00 |
| 1 | 2014-08-01 00:00:00 | 2014-09-01 00:00:00 |
| 2 | 2014-07-01 00:00:00 | 2014-08-01 00:00:00 |
| 2 | 2014-08-01 00:00:00 | 2014-09-01 00:00:00 |
| 2 | 2014-10-01 00:00:00 | 2014-11-01 00:00:00 |
+---------+---------------------+---------------------+

这就是我想要的,而不仅仅是每个 USER_ID 的最小/最大日期

+---------+---------------------+---------------------+
| USER_ID | start | end |
+---------+---------------------+---------------------+
| 1 | 2014-06-01 00:00:00 | 2014-09-01 00:00:00 |
| 2 | 2014-07-01 00:00:00 | 2014-09-01 00:00:00 |
| 2 | 2014-10-01 00:00:00 | 2014-11-01 00:00:00 |
+---------+---------------------+---------------------+

提前致谢。

最佳答案

使用聚合和分组依据

select user_id, min(start) as start, max(end) as end
from tablename
group by user_id

关于mysql - 当开始和结束位于不同的行和列时,合并不同 ID 的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58218655/

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