【问题标题】:SQL - retrieve last record of day for the last 7 daysSQL - 检索过去 7 天的最后一条记录
【发布时间】:2011-12-23 03:03:41
【问题描述】:

我每小时都会在我的表中插入一条记录。现在我需要检索过去 30 天内每天的最新记录。

这是我的桌子:

pl_scores: {
  score_id: 'BIGINT(255) PRIMARY KEY AUTO_INCREMENT'
, pid: 'INT(100)'
, score: 'INT(255)'
, rank: 'INT(50)'
, city_cnt: 'INT(10)'
, updatedAt: 'DATETIME'
}

由于每天有 24 条记录,我不知道如何仅提取当天的最新记录。任何帮助将不胜感激。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    第 1 步 - 按天分组。
    第 2 步 - 选择每个组的最后一个条目的时间戳。
    第 3 步 - 返回并获取与这些时间戳匹配的记录。


    SELECT
      pl_scores.*
    FROM
      pl_scores
    INNER JOIN
      (SELECT MAX(updatedAt) AS maxUpdatedAt FROM pl_scores GROUP BY DATE(updatedAt)) as Lookup
        ON Lookup.MaxUpdatedAt = pl_scores.updatedAt
    

    注意:这假设每条记录在 updatedAt 中都有不同的值。如果它们不是唯一的,并且多条记录被绑定为任何给定日期的最新记录,则返回所有绑定的记录。

    【讨论】:

    • 抱歉,还没写完就保存了。哎呀。现在完成:)
    • 所以我可以通过添加订单和限制来选择过去 30 天或 7 天,对吗?
    • @PastorBones - 是的。尽管使用WHERE updatedAt >= 'from date here' 可能会看到更好的性能。这也将保证天数而不是记录数。 (例如,如果圣诞节那天没有插入记录。)
    猜你喜欢
    • 1970-01-01
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2013-06-15
    相关资源
    最近更新 更多