У меня есть таблица, которая выглядит так. Один и тот же id1 может иметь более одной строки с разными значениями действия. Однако может быть одно "открытое" и одно "объединенное" значение для одного id1 (не все id1 будут иметь строку с "объединенным" значением, но каждый идентификатор гарантированно имеет "открытое" значение)
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, которые имеют "объединенное" значение, я хочу получить разницу во времени между тем, когда он был открыт, и когда он был объединен в один запрос. Как это возможно?
Вы можете сделать это с помощью самостоятельного присоединения:
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.