获取MySQL中的下一个时间戳

时间:2011-11-30 20:23:13

标签: 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上花费的时间,直到他们去其他地方。

获得第一个时间戳很简单。一个想法是记录tracker值,然后执行子查询,以便再次弹出user_id,其中tracker高于第一个。{1}}。在示例中:WHERE user_id = 1 AND tracker > 1

是否有更优化的解决方案?

1 个答案:

答案 0 :(得分:5)

这可能会对你有所帮助。这将加入所有未来的行动

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;