Php 在MySQL中获取下一个时间戳
我更愿意在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上花费了多长时间,直到他
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