MySQL查询计算行之间的时间差

MySQL查询计算行之间的时间差,mysql,sql,Mysql,Sql,我有一个关于在mysql中使用Condition查询表的问题 我创建了一个存储过程,如下所示: SELECT A.*, TIMESTAMPDIFF(SECOND,A.start, COALESCE(MIN(B.start), NOW())) AS timespent_in_sec FROM activity_logs A LEFT JOIN activity_logs B ON B.user_id = A.user_id AND B.id > A.id WHERE A.user_id

我有一个关于在mysql中使用Condition查询表的问题

我创建了一个存储过程,如下所示:

SELECT A.*, TIMESTAMPDIFF(SECOND,A.start, COALESCE(MIN(B.start), NOW())) AS timespent_in_sec FROM activity_logs A LEFT JOIN  activity_logs B ON  B.user_id = A.user_id AND B.id > A.id WHERE A.user_id = userId AND A.start  >=   startDate  AND  A.start <= endDate GROUP BY A.id, Day(A.start) ORDER BY A.start ASC
因此,我的目标是停止计算,或者在他们到达注销活动时将其设置为0。像这样的事情:

id      start                   activity            user_id     timespent_in_sec
1       2018-11-12 10:37:53     Login               81          124
2       2018-11-12 10:39:57     1st Break           81          59
3       2018-11-12 10:40:56     1:1 Coaching        81          35
4       2018-11-12 10:41:31     2nd Break           81          76
5       2018-11-12 10:42:47     Logout              81          0 // means user has been logout and this will end the computation od timespent in sec
谢谢你的帮助。
提前感谢。

您可以在使用表达式时尝试使用
大小写

SELECT A.*, 
      CASE WHEN activity = 'Logout' 
           THEN 0 
           ELSE TIMESTAMPDIFF(SECOND,A.start, COALESCE(MIN(B.start), NOW())) 
       END AS timespent_in_sec
FROM activity_logs A 
LEFT JOIN  activity_logs B ON  B.user_id = A.user_id AND B.id > A.id 
WHERE A.user_id = userId AND A.start >= startDate  AND  A.start <= endDate GROUP BY A.id, Day(A.start) 
ORDER BY A.start ASC
选择一个*,
活动为“注销”时的情况
然后0
ELSE TIMESTAMPDIFF(SECOND,A.start,COALESCE(MIN(B.start),NOW())
以秒为单位的时间消耗结束
从活动_日志
左连接活动\u在B.user\u id=A.user\u id和B.id>A.id上记录B

其中A.user_id=userId和A.start>=startDate和A.start没问题很乐意帮忙
SELECT A.*, 
      CASE WHEN activity = 'Logout' 
           THEN 0 
           ELSE TIMESTAMPDIFF(SECOND,A.start, COALESCE(MIN(B.start), NOW())) 
       END AS timespent_in_sec
FROM activity_logs A 
LEFT JOIN  activity_logs B ON  B.user_id = A.user_id AND B.id > A.id 
WHERE A.user_id = userId AND A.start >= startDate  AND  A.start <= endDate GROUP BY A.id, Day(A.start) 
ORDER BY A.start ASC