You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MySQL将Table2的last_value更新为Table1的最新记录值?

问题解决:更新table2为table1最新记录的值

问题背景

现有两张表:

table1

idtimevalue
12024-01-09 22:24:14100
22024-01-10 22:25:14200
32024-01-11 22:26:14300

table2

idlast_value
1---

需要将table2中id=1的last_value更新为table1里最新时间对应的value(即300),但执行以下脚本后,结果总是被更新为table1第一条记录的100:

update Table1, Table2 set Table2.last_value = Table1.Value where Table2.Id=1;

问题原因

原脚本未对table1做筛选或排序,直接关联两张表时,数据库会随机匹配table1中的一条记录(示例中恰好匹配到第一条),无法定位到最新的那条数据。

解决方案

通用写法(多数数据库适用)

通过子查询先获取table1中时间最晚的value,再更新table2:

UPDATE Table2
SET last_value = (
    SELECT value
    FROM Table1
    ORDER BY time DESC
    LIMIT 1  -- MySQL、PostgreSQL使用该语法
)
WHERE id = 1;

SQL Server 适配写法

SQL Server不支持LIMIT,需替换为TOP 1:

UPDATE Table2
SET last_value = (
    SELECT TOP 1 value
    FROM Table1
    ORDER BY time DESC
)
WHERE id = 1;

关联子查询写法

如果需要更明确的关联逻辑,可先筛选出table1的最新记录,再关联更新:

UPDATE Table2 t2
SET last_value = t1.value
FROM (
    SELECT value
    FROM Table1
    ORDER BY time DESC
    LIMIT 1
) t1
WHERE t2.id = 1;

内容的提问来源于stack exchange,提问作者Sudheera Warnasooriya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 14:22:17