为所选ID选择每天的最大日期

时间:2018-10-22 18:19:28

标签: mysql join

我目前有一个表,其中包含针对任何给定ID每天都有多个条目构成的数据。

我需要选择每天的最长日期,以免选择数百条记录。

我现在正在使用此查询,但是在数据库中,每个ID仅返回一个最大日期期限。

 SELECT a.*
 FROM turtle_locations a
 INNER JOIN
    (SELECT turtle_id, MAX(date) AS maxdate
    FROM turtle_locations
    GROUP BY turtle_id) groupedtt 
 ON a.turtle_id = groupedtt.turtle_id 
 AND a.date = groupedtt.maxdate

我想要的是,如果一只特定的乌龟在一天中说了10条记录,只返回当天的最新记录。

表结构非常简单: turtle_id,日期,纬度,经度

随着时间的推移,每只乌龟都有多项记录,每天都有多项记录。例如,查看以下其中一只海龟的数据

https://pastebin.com/jpQB2VKW

2 个答案:

答案 0 :(得分:1)

  • 在子选择查询(Derived Table)中,您还需要使用Date()函数按日期分组。这将为您提供最大日期值每天和ID

尝试以下操作:

 SELECT a.*
 FROM turtle_locations AS a
 INNER JOIN
    (SELECT turtle_id, 
            DATE(`date`) AS day_date, 
            MAX(`date`) AS maxdate
    FROM turtle_locations 
    GROUP BY turtle_id, day_date) AS groupedtt 
 ON a.turtle_id = groupedtt.turtle_id 
 AND a.`date` = groupedtt.maxdate 

DB Fiddle Demo

答案 1 :(得分:0)

http://sqlfiddle.com/#!9/861ab1/1

 SELECT a.*
 FROM turtle_locations a
 LEFT JOIN turtle_locations b
    ON a.turtle_id = b.turtle_id
    AND a.date < b.date
 WHERE b.turtle_id IS NULL