从mysql数据库中获取最新更新的数据[重复]

Posted

技术标签:

【中文标题】从mysql数据库中获取最新更新的数据[重复]【英文标题】:Get a most recent updated data from mysql database [duplicate] 【发布时间】:2021-01-02 16:10:37 【问题描述】:

我需要从表中为每个 id 检索一系列数据。列的数据或行值必须是第二个最近的值。例如,我有 表-estimate_record如下

Id        value   last_updated
1         210     10/2018
1         205     11/2018
1         215     12/2018   -- current

我需要获取该特定 id =1 的 205

我使用了Max(value),但它得到了215,这是不对的。

【问题讨论】:

last_updated 是日期时间字段还是 varchar? 【参考方案1】:

如果您运行的是 mysql 8.0,您可以使用窗口函数来执行此操作:

select *
from (
    select t.*, row_number() over(partition by id order by last_updated desc) rn
    from mytable t
) t
where rn = 2

在早期版本中,一个选项使用子查询:

select t.*
from mytable t
where t.last_updated = (
    select t1.last_updated
    from mytable t1
    where t1.id = t.id
    order by t1.last_updated desc
    limit 1 offset 1
)

【讨论】:

谢谢,但我使用的是 MySQL 5.5。 @Sam:好的。我用早期版本的解决方案编辑了我的答案。 假设我又添加了两行 2 214 12/2018 3 300 11/2019 3 400 12/2019 我需要为该特定 id = 1 获取 205,但为 id = 3 获取 300。另外,对于那个特定的 id,我还需要找出当前和上次更新的 id 之间的差异。 @Sam:在发布答案后更改问题并不是一个好习惯。我只能推荐你ask a new question。 当然。虽然我有这个帐户几年了,但我很少使用它。我再问一个问题。

以上是关于从mysql数据库中获取最新更新的数据[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何从重复记录中检索mysql表中的最新数据

MySQL根据列中的最大值获取行[重复]

如何在mysql查询的更新语句中加入多个表[重复]

从 MySQL 中的“重复键更新”获取动态值

Oracle SQL 查询从一行中的多个列中获取最新数据

MySQL数据库的my.ini文件