【问题标题】:MySQL select records using MAX(datefield) minus three daysMySQL 使用 MAX(datefield) 减去三天选择记录
【发布时间】:2015-03-29 06:19:15
【问题描述】:

显然,我只见树木不见森林……我在这里遗漏了一些明显的东西!

场景:

我有一个典型的表 asset_locator 有多个字段:

id, int(11) PRIMARY
logref, int(11)
unitno, int(11)
tunits, int(11)
operator, varchar(24)
lineid, varchar(24)
uniqueid, varchar(64)
timestamp, timestamp

我目前的挑战是根据日期范围从该表中选择记录。更具体地说,使用 MAX(timestamp) 字段的日期范围。 所以...选择时我需要从最新的时间戳值开始并返回 3 天。

EX:我选择 lineid = 'xyz' 的所有记录,并从最新的时间戳返回 3 天。下面是我一直在尝试运行的一个实际示例(数十个)。 MySQL 返回单行,其中所有 NULL 值用于以下各项:

SELECT id, logref, unitno, tunits, operator, lineid, 
        uniqueid, timestamp, MAX( timestamp ) AS maxdate
FROM asset_locator 
WHERE 'maxdate' < DATE_ADD('maxdate',INTERVAL -3 DAY)
ORDER BY uniqueid DESC

一定有一些明显的我遗漏的东西。如果有人有任何想法,请分享。 非常感谢!

【问题讨论】:

  • 所有记录或单个资产记录的最新时间戳值?
  • 假设最大值是 1 月 10 日,而 1 月 10 日
  • 在生产中使用实际上会包含一个附加条件,“WHERE lineid='xyz'” 因此,回答 xQbert,只为与给定 lineid 值匹配的记录选择时间戳值.

标签: mysql select max date-range


【解决方案1】:

MAX() 是一个聚合函数,这意味着您的 SELECT 将始终返回包含最大值的一行。除非您使用 GROUP BY,但看起来这不是您需要的。

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_max

如果您需要 MAX(timestamp) 到 3 天前的所有条目,则需要进行子选择以获取最大日期,然后在搜索条件中使用它。像这样:

SELECT id, logref, unitno, tunits, operator, lineid, uniqueid, timestamp
FROM asset_locator
WHERE timestamp >= DATE_ADD( (SELECT MAX(timestamp) FROM asset_locator), INTERVAL -3 DAY)

只要您在timestamp 列上定义了索引,它仍然会高效运行。

注意:在您的示例中

WHERE 'maxdate' < DATE_ADD('maxdate',INTERVAL -3 DAY)

这里您实际上使用的是字符串“maxdate”,因为引号导致条件返回 false。这就是您看到所有字段都为 NULL 的原因。

编辑:糟糕,在查询中忘记了“FROM assets_locator”。写答案时它在某个时候迷路了:)

【讨论】:

  • 谢谢FlyLo11!!! - 这是我一直在寻找的方法。顺便说一句,对于未来的读者......上面的 SELECT 语句有一个小问题:它还需要在 sub_select 所在的 WHERE 子句之前的初始“FROM asset_locator”:SELECT id、logref、unitno、tunits、operator、lineid、uniqueid , timestamp FROM assets_locator WHERE timestamp >= DATE_ADD( ( SELECT MAX( timestamp ) FROM asset_locator ) , INTERVAL -7 DAY ); ——
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 2014-08-07
  • 1970-01-01
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
相关资源
最近更新 更多