ここに私のデータ構造があります:
name value date_received
foo 100 2013-09-19 10:00:00
bar 200 2013-09-19 10:00:00
foo 100 2013-09-19 10:05:00 //no change
bar 200 2013-09-19 10:05:00 //no change
foo 110 2013-09-19 10:08:00 // foo changed
bar 200 2013-09-19 10:08:00 // no change
......
質問:
次のようなクエリ (mysql) が必要です。
select date_received where anyOf(foo, bar) changed from the previous
specified value in the past N hours.
テーブルには他の名前があるかもしれませんが、foo と bar だけに関心があります。
任意のポインター。私には、自己結合が必要なように見えますが、方法がわかりません。
編集:以下のクエリはちょうど良い出発点のようです。
select date_received from (SELECT DISTINCT name, value from data) a
INNER JOIN (select DISTINCT name, value, date_received from data)b
on (a.name=b.name and a.value=b.value)
更新以下のクエリが機能するように見えます-思ったより簡単です。
SELECT DISTINCT a.tr FROM (
SELECT name, value, MAX(date_received) dr from data
where date_received > now() - INTERVAL 2 hour
GROUP BY name, value order by dr desc)a;