我有这样的mysql表t1:

mysql - 如何在MySQL中计算当前行与上一行之间的时差-LMLPHP

我想做的是在所有行之间进行计算,并将值保存在称为diff的新列中

TICKETID| DATENEW  | DIFF
16743     12:36:46   0
16744     12:51:25   15.  minute
16745     12:57:25   6.5  minute
..........
.......
etc


我知道也有类似的问题,但我尝试了所有解决方案
发表在这里没有成功,那么如何解决这个查询?

最佳答案

要获取当前行和上一行之间的时间差(以分钟为单位),可以在timestampdiff上使用datenow和上一时间,可以通过子查询获得:

select ticketid, datenew,
    timestampdiff(minute,datenew,(select datenew from mytable t2
        where t2.ticketid < t1.ticketid order by t2.ticketid desc limit 1)) as diff
from mytable t1


更新资料

这是使用变量存储先前更快的datenew值的另一种方法:

select ticketid, datenew, timestampdiff(minute,datenew,prevdatenew)
from (
    select ticketid, datenew, @prevDateNew as prevdatenew,
      @prevDateNew := datenew
    from mytable order by ticketid
) t1

10-01 13:13