我在编写这段代码时遇到了一个小问题。我有一个返回类次日期列表的 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
我需要算出通话之间的间隔。 IE。第 1 行的 etime
和第 2 行的 stime
之间的差距。答案应该是 5。
我可以使用 PHP 轻松计算出差异,但无法计算出如何获得:
第 1 行的 etime
,第 2 行的 stime
,然后是第 2 行的 etime
和第 行的 stime
3 etc......等等......我猜是某种交替函数,但不知道。
我确实需要指出 id
不会不连续。
我是这个网站的新手,环顾四周,看看是否有人问过这个问题。如果有,我深表歉意。 感谢任何可以提供帮助的人。
编辑:@sean 已经为我回答了这个问题,除了 id
结果必须是连续的。我需要了解如何使用非连续 id
LEFT JOIN
最佳答案
使用 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
增量没有间隙。
关于PHP SQL 找出轮值访问之间的差距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22795639/