我有一张看起来像这样的桌子。相同的id1可以包含多个具有不同操作值的行。但是,对于一个id1,可以有一个'open'和一个'merged'值(并非所有id1都有一个'merged'值,但每个id都保证'open'值)
id_1 id2 id3 action time ext_id
8131201 2 345886 opened 2012-01-19 00:24:55 5099318b1b66c0d7b200000c
8510820 2 345886 merge 2012-01-26 09:20:17 5099318b1b66c0d7b200000d
对于那些具有“合并”值的id1,我希望得到它在打开时和在单个查询中合并时的时间差。怎么可能呢?
答案 0 :(得分:1)
您可以使用自我加入来执行此操作:
SELECT t.id_1, TIMEDIFF(t.time, t2.time) AS time_difference
FROM t
INNER JOIN t t2 ON t.id_1 = t2.id_1
WHERE t.action = 'opened'
AND t2.action = 'merge
所以基本上将表连接到id 1,其中第一个记录打开,第二个记录合并。然后使用TIMEDIFF找到每个表副本的时间差异。