Скажем, у меня есть таблица MySQL с идентификатором, меткой времени и другим столбцом. Мое приложение добавляет строку каждые 15 минут для каждого идентификатора с нулевым или другим значением в столбце. В конце концов может появиться или исчезнуть новый идентификатор.
+----+------+--------+
| ID | time | column |
+----+------+--------+
| 1 | 8:00 | A |
+----+------+--------+
| 2 | 8:00 | null |
+----+------+--------+
| 3 | 8:00 | B |
+----+------+--------+
| 4 | 8:00 | null |
+----+------+--------+
| 1 | 8:15 | A |
+----+------+--------+
| 2 | 8:15 | null |
+----+------+--------+
| 3 | 8:15 | null |
+----+------+--------+
| 4 | 8:15 | null |
+----+------+--------+
| 5 | 8:15 | null |
+----+------+--------+
| 1 | 8:30 | A |
+----+------+--------+
| 2 | 8:30 | null |
+----+------+--------+
| 3 | 8:30 | B |
+----+------+--------+
| 4 | 8:30 | C |
+----+------+--------+
| 5 | 8:30 | null |
+----+------+--------+
| 1 | 8:45 | A |
+----+------+--------+
| 2 | 8:45 | null |
+----+------+--------+
| 3 | 8:45 | null |
+----+------+--------+
| 4 | 8:45 | C |
+----+------+--------+
| 5 | 8:45 | D |
+----+------+--------+
Мне нужен запрос, который дает мне для каждой отметки времени все строки, которые имеют нуль в столбце текущей и прошлой строк.
Ожидаемый результат:
+----+------+
| ID | time |
+----+------+
| 2 | 8:00 |
+----+------+
| 4 | 8:00 |
+----+------+
| 2 | 8:15 |
+----+------+
| 4 | 8:15 |
+----+------+
| 5 | 8:15 |
+----+------+
| 2 | 8:30 |
+----+------+
| 5 | 8:30 |
+----+------+
| 2 | 8:45 |
+----+------+
Благодарю.
Я думаю, что ниже запрос должен работать для вас. Он проверяет каждый идентификатор, если в колонке "col" в текущей строке и предыдущей строке есть нуль.
SELECT
t1.id, t1.time
FROM
test t1
WHERE
t1.col IS NULL
AND ((SELECT MAX(col) FROM test WHERE id = t1.id AND time < t1.time) IS NULL);