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

时间:2012-05-08 14:51:47

标签: mysql max

我知道这个问题已经有了一些解决方案,但它们似乎对我没用。

我想在我的数据库中选择每个用户每天的最后一条记录。我有一个数据库,按国家和日期存储用户的位置,直到第二个。

我正在尝试运行的选择查询是:

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一起。

我做错了什么?

非常感谢!

谢谢,

杰克

3 个答案:

答案 0 :(得分:10)

尝试此查询以显示每个用户每天的最后一条记录 -

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条件。

答案 1 :(得分:0)

我认为你不应该按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

答案 2 :(得分:-1)

您应该通过将ORDER BY更改为DESC而不是ASC来获得正确的结果