如何使用单条Update查询从表B、C更新表A的Price和Limit列

多表关联更新表A的实现方案
不同主流数据库的多表UPDATE语法略有差异,以下是对应实现代码:
MySQL 写法
UPDATE 表A a -- 按需调整关联逻辑,也可以是表B和表C先关联再和表A关联 INNER JOIN 表B b ON a.关联字段 = b.关联字段 INNER JOIN 表C c ON a.关联字段 = c.关联字段 SET a.Price = b.对应Price字段, -- 替换为表B中实际存储Price的字段名 a.`Limit` = c.对应Limit字段 -- Limit是SQL保留关键字,MySQL用反引号转义 -- 按需添加过滤条件,无特殊过滤可省略 WHERE 筛选条件;
PostgreSQL 写法
UPDATE 表A a SET Price = b.对应Price字段, "Limit" = c.对应Limit字段 -- PostgreSQL关键字用双引号转义 FROM 表B b, 表C c WHERE a.关联字段 = b.关联字段 AND a.关联字段 = c.关联字段 AND 筛选条件;
SQL Server 写法
UPDATE a SET a.Price = b.对应Price字段, a.[Limit] = c.对应Limit字段 -- SQL Server关键字用方括号转义 FROM 表A a INNER JOIN 表B b ON a.关联字段 = b.关联字段 INNER JOIN 表C c ON a.关联字段 = c.关联字段 WHERE 筛选条件;
注意事项
- 执行更新前务必先用SELECT语句验证关联结果是否正确,避免关联条件错误导致的数据误更新
- 生产环境操作前建议开启事务,确认更新结果符合预期后再提交,出错可直接回滚
- 示例中的
关联字段为通用占位符,需替换为三张表实际的外键/关联字段
内容的提问来源于stack exchange,提问作者Ashish Jaiswal
相关产品推荐
相关产品推荐

