如何在按时间顺序排序的单个表中连接记录对(使用MySQL)

时间:2011-01-05 02:45:14

标签: sql mysql join

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

ID,TYPE,TIME

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,TYPE,TIME,ID,TYPE,TIME

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

2 个答案:

答案 0 :(得分:1)

有趣的问题,希望这项工作适合你

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;

答案 1 :(得分:1)

感谢ajreal,它帮助我找到答案:

SELECT T.ID,T.Type,T.Time,T2.ID,T2.Type,T2.Time FROM Table T LEFT JOIN Table T2 
ON (T.Type = 'A' AND T2.Type = 'B' AND T.Time < T2.Time) 
WHERE T2.ID IS NOT NULL
GROUP BY T.ID