繁体   English   中英

如何使用MySQL从每天选择最后一条记录

[英]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

但是,这实际上做的是向我显示每天的最后日期,但不是正确对应的idcountry 它实际上获得了第一个idcountry ,以及最后一个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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM