#mysql
#mysql
Вопрос:
я хочу получить интервал времени для каждого события во всех областях моего рабочего места, поэтому я получил эту таблицу, которая показывает время возникновения события
ID | area | TIME 1
01 | A | 2016-09-20 14:55:54
02 | A | 2016-09-21 18:00:00
04 | A | 2016-09-23 20:14:14
06 | B | 2016-09-24 13:52:24
10 | B | 2016-09-26 13:33:34
13 | B | 2016-09-28 18:22:46
как мы можем видеть, идентификатор не является последовательным, потому что в запросе отфильтрованы другие данные, я хочу, чтобы результат был таким:
area | TIME 1 | TIME 2
A | 2016-09-20 14:55:54 | 2016-09-21 18:00:00
A | 2016-09-21 18:00:00 | 2016-09-23 20:14:14
B | 2016-09-24 13:52:24 | 2016-09-26 13:33:34
B | 2016-09-26 13:33:34 | 2016-09-28 18:22:46
есть ли способ сделать это в выборе?, я использую внутреннее соединение с тем же «временем 1», но оно получает «время 2» для каждого «времени 1», в результате чего для области A:
area | TIME 1 | TIME 2
A | 2016-09-20 14:55:54 | 2016-09-20 14:55:54
A | 2016-09-20 14:55:54 | 2016-09-21 18:00:00
A | 2016-09-20 14:55:54 | 2016-09-23 20:14:14
A | 2016-09-21 18:00:00 | 2016-09-20 14:55:54
A | 2016-09-21 18:00:00 | 2016-09-21 18:00:00
A | 2016-09-21 18:00:00 | 2016-09-23 20:14:14
A | 2016-09-23 20:14:14 | 2016-09-20 14:55:54
A | 2016-09-23 20:14:14 | 2016-09-21 18:00:00
A | 2016-09-23 20:14:14 | 2016-09-23 20:14:14
Ответ №1:
SELECT *
FROM Table1 T1
JOIN Table1 T2
ON T1.area = T2.area
AND T2.ID = (SELECT MIN(T3.ID)
FROM Table1 T3
WHERE T3.ID > T1.ID
AND T3.area = T1.area)
ВЫВОД
РЕДАКТИРОВАТЬ: я предполагаю, что если ID_1 < ID_2
тогда Time_1 < Time_2