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

MSSQL如何按关联条件将一个表的数据更新到另一张表

关联表更新语法实现

你需要的关联更新逻辑确实需要通过JOIN实现,不同主流数据库的语法略有差异,以下是可直接使用的实现方案:

MySQL 写法

UPDATE table_a a
INNER JOIN table_b b 
  ON a.id = b.id
SET 
  a.col1 = b.col1,
  a.col2 = b.col2;

PostgreSQL / SQL Server 写法

UPDATE table_a a
SET 
  col1 = b.col1,
  col2 = b.col2
FROM table_b b
WHERE a.id = b.id;

全数据库兼容写法

适配所有关系型数据库,无需考虑数据库语法差异,仅性能略低于JOIN写法,适合小数据量场景:

UPDATE table_a
SET 
  col1 = (SELECT col1 FROM table_b WHERE table_b.id = table_a.id),
  col2 = (SELECT col2 FROM table_b WHERE table_b.id = table_a.id)
WHERE EXISTS (
  SELECT 1 FROM table_b WHERE table_b.id = table_a.id
);

重要提醒:上述兼容写法必须保留最后的EXISTS条件,否则table_a中不存在table_b匹配id的行,对应col1、col2会被覆盖为NULL,引发数据异常。

  • 如需增加过滤条件仅更新部分行,直接在对应语法的WHERE子句中补充规则即可,比如仅更新table_b中status为1的匹配行,补充AND b.status = 1即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:06:03