MySQL行间时间差匹配条件

MySQL行间时间差匹配条件,mysql,Mysql,您好,我需要关于MySQL数据库查询的帮助 我有一张这样的桌子: ID TRACKID DATE Name Action 38 2013-08-12-36 2013-08-12 14:54:50 John Smith 0 37 2013-08-12-39 2013-08-12 14:54:28 John Smith 3 36 2013-08-12-39 2013-08-12 14:53:24 John Smith

您好,我需要关于MySQL数据库查询的帮助

我有一张这样的桌子:

ID  TRACKID         DATE                    Name    Action
38  2013-08-12-36   2013-08-12 14:54:50 John Smith  0
37  2013-08-12-39   2013-08-12 14:54:28 John Smith  3
36  2013-08-12-39   2013-08-12 14:53:24 John Smith  4
35  2013-06-12-91   2013-08-12 14:30:01 John Smith  3
34  2013-06-12-91   2013-08-12 14:29:44 John Smith  4
31  2013-06-12-91   2013-08-12 14:28:39 John Smith  0
SELECT 
    t1.TRACKID,
    t2.date - t1.date
FROM
    table t1
    JOIN table t2 ON t2.TRACKID = t1.TRACKID AND t1.Action = 0 AND t2.Action = 3
WHERE t1.date BETWEEN '2013-08-12 00:00:00' AND '2013-08-12 23:59:59'
我想列出指定日期之间每个唯一TRACKID的ACTION=0和ACTION=3之间的时间差

SELECT DISTINCT TIMEDIFF
       (
                (select `date` from hesk_history where `action` = 0),
                (select `date` from hesk_history where `action` = 3 )
       ) AS DIFF

FROM    hesk_history

WHERE `date` BETWEEN '2013-08-12 00:00:00' AND '2013-08-12 23:59:59'
解决方案应列出每个不同的TRACKID以及操作0和操作3之间的时间差(当每个TRACKID存在这些操作时)

TRACKID       DIFF
2013-06-12-91 -00:01:22

尝试如下方式将表自身连接起来:

ID  TRACKID         DATE                    Name    Action
38  2013-08-12-36   2013-08-12 14:54:50 John Smith  0
37  2013-08-12-39   2013-08-12 14:54:28 John Smith  3
36  2013-08-12-39   2013-08-12 14:53:24 John Smith  4
35  2013-06-12-91   2013-08-12 14:30:01 John Smith  3
34  2013-06-12-91   2013-08-12 14:29:44 John Smith  4
31  2013-06-12-91   2013-08-12 14:28:39 John Smith  0
SELECT 
    t1.TRACKID,
    t2.date - t1.date
FROM
    table t1
    JOIN table t2 ON t2.TRACKID = t1.TRACKID AND t1.Action = 0 AND t2.Action = 3
WHERE t1.date BETWEEN '2013-08-12 00:00:00' AND '2013-08-12 23:59:59'

尝试如下方式将表自身连接起来:

ID  TRACKID         DATE                    Name    Action
38  2013-08-12-36   2013-08-12 14:54:50 John Smith  0
37  2013-08-12-39   2013-08-12 14:54:28 John Smith  3
36  2013-08-12-39   2013-08-12 14:53:24 John Smith  4
35  2013-06-12-91   2013-08-12 14:30:01 John Smith  3
34  2013-06-12-91   2013-08-12 14:29:44 John Smith  4
31  2013-06-12-91   2013-08-12 14:28:39 John Smith  0
SELECT 
    t1.TRACKID,
    t2.date - t1.date
FROM
    table t1
    JOIN table t2 ON t2.TRACKID = t1.TRACKID AND t1.Action = 0 AND t2.Action = 3
WHERE t1.date BETWEEN '2013-08-12 00:00:00' AND '2013-08-12 23:59:59'

下面应该可以使用,我不确定DATEDIFF函数是否在MySQL上,但如果不确定它是否有自己的函数


SELECT A.TrackID,
       DATEDIFF(A.TrackID,B.TrackID)
FROM hesk_history A
INNER JOIN hesk_history B
ON A.TrackID = B.TrackID AND B.Action=3
WHERE A.TrackID == <your_input> AND A.Action=0

选择A.TrackID,
DATEDIFF(A.TrackID,B.TrackID)
来自赫斯克大学历史A
内部连接hesk_历史B
在A.TrackID=B.TrackID和B.Action=3上
其中A.TrackID==和A.Action=0

下面的函数应该可以工作,我不确定DATEDIFF函数是否在MySQL上,但如果不确定它是否有自己的函数


SELECT A.TrackID,
       DATEDIFF(A.TrackID,B.TrackID)
FROM hesk_history A
INNER JOIN hesk_history B
ON A.TrackID = B.TrackID AND B.Action=3
WHERE A.TrackID == <your_input> AND A.Action=0

选择A.TrackID,
DATEDIFF(A.TrackID,B.TrackID)
来自赫斯克大学历史A
内部连接hesk_历史B
在A.TrackID=B.TrackID和B.Action=3上
其中A.TrackID==和A.Action=0

谢谢,和萨什凯洛的想法一样。非常有用!谢谢你,和萨什凯洛的想法一样。非常有用!