[英]How to select last record from each day with MySQL
我知道这个问题已经有了一些解决方案,但它们似乎对我不起作用。
我想在每个用户的数据库中选择每天的最后一条记录。 我有一个数据库,按国家和日期存储用户的位置到第二个。
我正在尝试运行的选择查询是:
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
但是,这实际上做的是向我显示每天的最后日期,但不是正确对应的id
和country
。 它实际上获得了第一个id
和country
,以及最后一个date
。
我究竟做错了什么?
非常感谢!
谢谢,
插口
尝试此查询以显示每个用户每天的最后记录, -
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;
...如果需要,添加您的WHERE条件。
我想你不应该在DATE(date)
分组。 我认为你应该按userid,country
分组。 像这样:
SELECT
MAX(date), userid, 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 userid,country
ORDER BY date ASC
您应该通过将ORDER BY更改为DESC而不是ASC来获得正确的结果
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.