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

标签 mysql sql date date-difference

我有一张表,其中一个人有几行不同的 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/

相关文章:

php - 如何在整个mysql数据库上使用ucwords()php函数?

php - 更改 mysql 中的字符,转换失败 - 仍然出现 Não

sql - 如何在 Yii2 ActiveQuery 中选择索引

java - 日本日期验证 - 比较

php - 为什么 DateTime::sub 没有按预期工作?

php - UTF-8贯穿始终

php - 无法通过 php 脚本进行查询

sql - 执行计划成本估算

mysql - 如何从 mysql 表中选择最新的日期记录集

javascript - 从不带时区的字符串构造 JavaScript 日期(适用于 JqueryUI datepicker)