I know there are already some solutions to this question but they don't seem to be working for me.
I want to select the last record from each day, per user, on my database. I have a database that stores a user's location by country and date down to the second.
The select query I'm trying to run is:
SELECT MAX(date), id, country FROM dk_location_records WHERE userid = '10'
AND (date > '2012-04-06 00:00:00' AND date < '2012-05-08 23:59:59')
AND active = '1' GROUP BY DATE(date) ORDER BY date ASC
However, what this actually does is show me the last date from each day, but not the correctly corresponding id
and country
. It actually gets the first id
and country
, alongside the last date
.
What am I doing wrong?
Help greatly appreciated!
Thanks,
Jack
Try this query to show last record from each day, per user, -
SELECT t1.* FROM dk_location_records t1
JOIN (SELECT DATE(date) date_date, userid, MAX(date) max_date
FROM dk_location_records
GROUP BY date_date, userid
) t2
ON t1.date = t2.max_date AND t1.userid = t2.userid;
...add your WHERE conditions if you need.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With