我有一个mysql表,它将提供有关用户使用的信息。其中3个MySQL列是模块,Time1,Time2 。 我想获取Time1和amp;之间的时差。时间2 即Module = started& 'Time1'和Module = end& 'Time2',我也想考虑开始和结束组合。休息可以忽略。
如屏幕截图所示,谢谢。
我还创建了相同的数据http://sqlfiddle.com/#!9/1361c5,请使用它。
答案 0 :(得分:1)
尝试以下查询
SELECT
q1.time1,
q2.time2,
UNIX_TIMESTAMP(q2.time2)-UNIX_TIMESTAMP(q1.time1) seconds
FROM
(
SELECT *,@i1:=IFNULL(@i1,0)+1 num
FROM LogData
ORDER BY time1
) q1
JOIN
(
SELECT *,@i2:=IFNULL(@i2,0)+1 num
FROM LogData
ORDER BY time1
) q2
ON q2.num=q1.num+1 AND q1.status='started' AND q2.status='end'
SQL小提琴 - http://sqlfiddle.com/#!9/fbbd89/7