我在解决如何编写此代码方面遇到了一个小问题。我有一个MySQL查询,该查询返回轮班日期列表。返回的数据如下所示:

id |    date    |  stime   |  etime   | staff | client
------------------------------------------------------
1  | 2014-01-01 | 08:00:00 | 08:30:00 | Dave  | Mary
2  | 2014-01-01 | 08:35:00 | 09:05:00 | Dave  | Clive
3  | 2014-01-01 | 09:17:00 | 09:32:00 | Dave  | Joan
4  | 2014-01-01 | 09:38:00 | 10:08:00 | Dave  | Doris


我需要弄清楚通话之间的差距。即第1行中的etime与第2行中的stime之间的差距。答案应为5。
我可以使用PHP轻松计算出差异,但是无法计算出如何获得:
第1行的etime,第2行的stime,第2行的etime和第3行的stime等等...依此类推...我猜是有些交替功能,但不知道。

我确实需要指出,id不会是连续的。

我是该网站的新手,已经四处看看是否已经问过这个问题。如有,我深表歉意。
感谢任何能提供帮助的人。

编辑:@sean为我回答了这个问题,只是id结果必须是连续的。我需要找出如何用不连续的LEFT JOIN进行id

最佳答案

使用LEFT JOIN联接下一行stime。确保重命名t2.stime,以确保它没有歧义。

SELECT t1.*,
       t2.stime as `nxt_row_stime`
FROM table t1
LEFT JOIN table t2
ON t2.id = t1.id+1


注意:这要求id增量中没有间隙。

08-07 06:03