我目前有一个表,其中包含针对任何给定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,日期,纬度,经度
随着时间的推移,每只乌龟都有多项记录,每天都有多项记录。例如,查看以下其中一只海龟的数据
答案 0 :(得分:1)
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
答案 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