我有这样的 mysql 表 t1 :
我想要做的是在所有行之间进行计算并将值保存在名为 diff 的新列中
TICKETID| DATENEW | DIFF
16743 12:36:46 0
16744 12:51:25 15. minute
16745 12:57:25 6.5 minute
..........
.......
etc
我知道有类似的问题,但我尝试了所有的解决方案 发布在这里没有成功,那么如何解决这个查询???
最佳答案
要获取当前行和上一行之间的时间差(以分钟为单位),您可以在 datenow
和上一个时间上使用 timestampdiff
,您可以通过子查询获取:
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
关于mysql - MySQL中如何计算当前行与上一行之间的时间差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32040867/