MySql,连接两个相邻行

标签 mysql join

我正在努力完成 Mysql 中的一个简单任务。我有一个表“时间轴”,其中包含

ID |   Time   | Task
--------------------- 
1  | 12:00:00 | task1
2  | 12:13:00 | task2
3  | 10:16:00 | task0

作为列。条目不按时间排序。现在我想要一个看起来像这样的输出

ID |   From   |  Till    | Task
--------------------------------
3  | 10:16:00 | 12:00:00 | task0
1  | 12:00:00 | 12:13:00 | task1
2  | 12:13:00 |          | task2

我想,这应该很简单,但我还没弄清楚。期待任何建议。谢谢!

最佳答案

尝试这个查询:

create table tbl(ID int, `Time` time, Task varchar(10));
insert into tbl values
(1, '12:00:00', 'task1'),
(2, '12:13:00', 'task2'),
(3, '10:16:00', 'task0');

select @t := cast(null as time);

select id, task, start, end from (
  select id, @t `end`, @t := `time`, `time` `start`, task from tbl
  order by `time` desc
) a;

关于MySql,连接两个相邻行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51790257/

相关文章:

php - 在更新时在 mysql 中保留以前的时间戳

mysql - 我总是遇到指纹未验证的情况

mysql - MYSQL中如何从两个表中获取数据

MySQL:使用行子集来检查 where 子句

mysql - SQL 连接表并在右表中显示不匹配记录的默认值

mysql - 在 MySQL 中连接表 A 的行和表 B 的列

java - 如何为 EnumSet(MySQL SET 类型)编写 jOOQ 转换器

python - 管理 MySQL 数据最快的方法是什么? Pandas vs fetch_row

php - 如何修复 SQLSTATE[HY000] [1049] 未知数据库

mysql - 在 MySQL 中,如何以最有效的方式编写此 SQL 查询?