私は前の7日間のそれぞれから最後のレコードを選択するMySQLクエリを考え出しています。過去7日間のうち1日にデータが欠落していると、私は6レコードしか戻ってこないでしょう。ここで私が持っているものです。MySQL過去7日間の最後のレコードを選択するクエリ
SELECT tracking.* FROM tracking
INNER JOIN
(SELECT MAX(lastChecked) AS maxLastChecked, id FROM tracking
WHERE lastChecked >= DATE_SUB(lastChecked, INTERVAL 7 DAY)
GROUP BY DAY(lastChecked)) as Lookup ON Lookup.id = tracking.id
WHERE tracking.propertyID = 1 ORDER BY tracking.lastChecked ASC LIMIT 7
基本的にこれが何をすべきか(今日から始まる)過去7日間のそれぞれのトラッキングテーブルでpropertyID = 1の最終的な記録のエントリを選択しています。しかし、このクエリは(過去7日間以内にレコードのみよりも)私にこれを返して:
ID propertyID lastChecked value
2 1 2012-01-25 05:30:00 280
1 1 2012-01-26 12:34:02 268
5 1 2012-01-27 09:51:31 268
83 1 2012-02-13 00:01:07 276
これを修正するための任意の助けいただければ幸いです!
確認...「ID」列の自動インクリメントの主キー、及び2です。 .. LastCheckedは、いつ追加され、ID83を作成する誰かが修正することができず、ID84よりも前の時刻に対応するか、またはそれに類するものですか?また、lastchecked列にインデックスがありますか? – DRapp