我想计算同一用户在两个连续条目之间的持续时间,以便能够知道用户每次完成输入数据所花费的时间。我使用了以下查询,但它给出了一些负值和重复结果。
SELECT distinct u.name, u.firstname, c1.actenumber, c.actenumber,
TIME_TO_SEC(TIMEDIFF(c1.datecreation, c.datecreation)) as difference
FROM user u, citizen c1, citizen c
WHERE u.UTILID= c1.USERID
AND u.profil=0
AND c1.actenumber=c.actenumber-1
答案 0 :(得分:0)
我认为问题是你忘了检查两个公民行是否属于同一个公民。否则,您将为遇到actenumber-1
的任何人选择行。
我还使用JOIN语法清理了查询,以便更清楚连接逻辑与WHERE约束的关系。
SELECT distinct u.name, u.firstname, c1.actenumber, c2.actenumber,
TIME_TO_SEC(TIMEDIFF(c1.datecreation, c2.datecreation)) as difference
FROM user u
JOIN citizen c1
ON u.UTILID = c1.USERID
JOIN citizen c2
ON c1.USERID = c2.USERID AND
c1.actenumber=c2.actenumber-1
WHERE u.profil=0