Обнаружение изменений в наборе данных в MySQL - PullRequest
0 голосов
/ 29 апреля 2011

У меня есть таблица с упорядоченными по времени значениями:

id
date
value

value часто одинакова для сотен записей в стрейч, и я хотел бы иметь возможность определить, когда value изменений.Другими словами, я хотел бы знать, когда d / dx (производная данных) не равна 0!

Кажется, что должен быть довольно распространенный шаблон, но я не могу найти никаких примеров илисам придумай.Я нашел пример , в котором было выполнено это обнаружение изменений, но я не могу его использовать, потому что мой адаптер базы данных объединяет пулы и запросы не обязательно выполняются для одного и того же соединения.Точно так же я бы предпочел не использовать триггер базы данных.

Вот пример таблицы:

id | date             | value
1  | 2011-04-05 12:00 | 33
2  | 2011-04-06 12:00 | 39
3  | 2011-04-07 12:00 | 39
...
72 | 2011-05-16 12:00 | 39
73 | 2011-05-17 12:00 | 37
74 | 2011-05-18 12:00 | 33
75 | 2011-05-19 12:00 | 33
...

Я ищу запрос, который мог бы вернуть строки, в которых значения меняются:

id | date             | value
1  | 2011-04-05 12:00 | 33
2  | 2011-04-06 12:00 | 39
73 | 2011-05-17 12:00 | 37
74 | 2011-05-18 12:00 | 33

Нет необходимости, чтобы первая строка включалась в результат, так как таблица с одинаковыми значениями будет возвращать ноль строк (т. Е. Нет изменений).

Ответы [ 2 ]

1 голос
/ 31 июля 2011

э-э, используйте group by?

select min(id), min(date), value
from ...
group by value
order by id asc 
1 голос
/ 29 апреля 2011
SELECT t.id, t.date, t.value, if( (

SELECT td.value AS last_value
FROM tab td
WHERE td.date < t.date
ORDER BY td.date DESC
LIMIT 1
) <> t.value, 'changed', 'unchanged' ) AS cstatus
FROM tab t order by date

Не очень эффективный запрос, медленный на больших наборах, но делает свое дело.Добавление счетчика позволяет сказать, что num_repeated в качестве другого столбца, обновляемого при вставке, будет лучшим решением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...