MySQL行间时间差匹配条件
您好,我需要关于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
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
谢谢,和萨什凯洛的想法一样。非常有用!谢谢你,和萨什凯洛的想法一样。非常有用!