sql - 如何在按时间顺序排序的单个表中加入成对的记录(使用 MySQL)

标签 sql mysql join

我想知道是否有一种简单的方法可以将单个表中的记录对连接成一个表。例如:

ID、类型、时间

1, A, 01:00:00

2, B, 02:00:00

3,A,03:00:00

4, B, 04:00:00

5,A,05:00:00

我想检索的是一个单独的表格,其中列出了像这样的对 (A/B)。

ID,类型,时间,ID,类型,时间

1, A, 01:00:00, 2, B, 02:00:00

3, A, 03:00:00, 4, B, 04:00:00

5, A, 05:00:00,NULL,NULL,NULL

B记录应该是A之后的下一条记录,如果没有B则直接返回NULL。该表应按时间排序。

TIA

最佳答案

有趣的问题,希望这对你有用

select tbl_a.*, tbl_b.*
from 
  your_table as tbl_a
left join 
  your_table as tbl_b
on 
  tbl_a.ID=tbl_b.ID-1
where tbl_a.ID%2=1       <-- get ID mod 2=1
order by tbl_a.ID;

关于sql - 如何在按时间顺序排序的单个表中加入成对的记录(使用 MySQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4600400/

相关文章:

mysql - SQL 查询以获取结果集最后一行中所有列值的总和以及行总和(分组依据)

sql - 由外键控制的值

mysql - 将 mysql 输出从行转换为列

mysql - 获取加入结果的最新记录

mysql - SQL : Limit and Randomize results in join

sql - ORACLE SQL ROWNUM 执​​行顺序

mysql - 查询两个表中的所有记录

php - 用户角色(例如管理员、用户)进入表而不是用户名

java - 我能知道哪个类持有数据库连接吗?

php - 选择所有客户以及每个客户的总订单