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

DB2中如何用另一张表的最大值更新本表字段?

解决SQL更新单位最大里程的问题

原SQL的问题在于多做了一次不必要的Table B关联,不仅逻辑冗余,还可能引发数据库解析错误(也就是你遇到的104无效令牌),同时这种写法会导致同一单位匹配多条B表数据,造成更新逻辑混乱。

直接用分组聚合后的结果和Table A关联即可,以下是修正后的写法:

MySQL版本

UPDATE A
JOIN (
    SELECT unit, MAX(mileage) AS max_mil
    FROM B
    GROUP BY unit
) AS max_table ON A.unit = max_table.unit
SET A.mileage = max_table.max_mil;

支持UPDATE...FROM的数据库版本(如PostgreSQL、SQL Server)

UPDATE A
SET mileage = max_table.max_mil
FROM (
    SELECT unit, MAX(mileage) AS max_mil
    FROM B
    GROUP BY unit
) AS max_table
WHERE A.unit = max_table.unit;

说明

直接基于Table B的分组结果(按unit取最大里程)和A表关联,既避免了冗余的表连接、提升了执行效率,也解决了语法解析错误的问题,能准确将A表的mileage字段更新为对应单位在B表中的最大里程值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:54:57