Php 在MySQL中获取下一个时间戳

Php 在MySQL中获取下一个时间戳,php,mysql,Php,Mysql,我更愿意在MySQL中完成这项工作 表: tracker | user_id | timestamp | action 1 1 1234 1 2 2 1236 9 3 1 1237 2 我需要找到所有操作为1的用户,并从他们的下一个操作中减去时间戳。也就是说,用户1的1234时间戳将从其1237时间戳中减去 这个想法是计算用户在操作1上花费了多长时间,直到他

我更愿意在MySQL中完成这项工作

表:

tracker | user_id | timestamp | action
1         1         1234        1
2         2         1236        9
3         1         1237        2
我需要找到所有操作为1的用户,并从他们的下一个操作中减去时间戳。也就是说,用户1的1234时间戳将从其1237时间戳中减去

这个想法是计算用户在操作1上花费了多长时间,直到他们去了其他地方

获取第一个时间戳很容易。一种方法是记录
跟踪器
的值,然后进行子查询,以确定在哪里再次弹出比第一个高的
跟踪器
的用户id。在示例中:
其中user_id=1和tracker>1


是否有更理想的解决方案?

这可能对您有所帮助。这将与今后的所有行动结合起来

SELECT t1.*, 
       t2.`timestamp` - t1.`timestamp`
FROM   table t1 
       JOIN table t2 
         ON t1.user_id = t2.user_id 
            AND t2.tracker > t1.tracker 
WHERE  t1.`action` = 1;
您可能希望扩展以添加一个条件,以便仅获取下一个条件

这是一个特殊的查询,无法准确判断是否有效 假设只为该用户选择下一个

SELECT t1.*, 
       t2.`timestamp` - t1.`timestamp` 
FROM   table t1 
       JOIN table t2 
         ON t1.user_id = t2.user_id 
            AND t2.tracker = (SELECT Min(tracker) 
                              FROM   table t3 
                              WHERE  t3.user_id = t1.user_id 
                                     AND t3.tracker > t1.tracker) 
WHERE  t1.`action` = 1; 

我可以加2这个。我正在写一个更难看的解决方案,中途停了下来,因为这更优雅;D