【问题标题】:Inner Join Query with MAX Date Still Returning Multiple Values for Date具有 MAX 日期的内部联接查询仍返回多个日期值
【发布时间】:2019-08-10 11:17:43
【问题描述】:

我有一个查询,即每个指定 ID 每天最多提取一个条目。尽管指定了最大值,但查询每天返回多个值。我需要一些帮助来调整它,以便我每天只能获得一个条目。该图像显示了返回的数据的 sn-p。

    SELECT a.* 
    FROM turtle_derby AS a 
    INNER JOIN (SELECT turtle_id, DATE(`date`) AS day_date, MAX(`date`) AS maxdate 
    FROM turtle_derby 
    GROUP BY turtle_id, day_date) AS groupedtt 
    ON a.turtle_id = groupedtt.turtle_id 
    AND a.turtle_id = '175846' 
    AND a.`date` = groupedtt.maxdate 
    AND a.`date` > '2018-07-26' 
    ORDER BY `a`.`date`

【问题讨论】:

  • 此查询假定同一天没有重复的时间。
  • 如果有多行都在一天的最后一个时间,应该返回哪一行?
  • 那么应该返回最后一个(最近的ID)。

标签: mysql inner-join


【解决方案1】:

您的数据在一天中的同一时间有多行。如果那个时间是一天中的最后一次,你会得到所有的。您需要获得最多两列,dateloc_id。见SQL : Using GROUP BY and MAX on multiple columns

SELECT a.* 
FROM turtle_derby AS a 
INNER JOIN (
    SELECT t2.turtle_id, MAX(t2.loc_id) AS max_id
    FROM (
        SELECT turtle_id, MAX(date) AS maxdate
        FROM turtle_derby AS
        GROUP BY turtle_id, DATE(date)
    ) AS t1
    INNER JOIN turtle_derby AS t2
    ON t1.turtle_id = t2.turtle_id AND t1.maxdate = t2.date
    GROUP BY t1.turtle_id, t1.maxdate
) AS groupedtt 
ON a.turtle_id = groupedtt.turtle_id 
AND a.loc_id = groupedtt.maxloc
WHERE a.turtle_id = '175846' 
AND a.`date` > '2018-07-26' 
ORDER BY `a`.`date`

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 2022-11-14
    • 2016-08-08
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多