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

PostgreSQL中如何通过JOIN或LEFT JOIN关联条件更新表数据

问题原因

原SQL未在UPDATE语句中显式声明关联表B,直接在WHERE条件中引用B表字段,数据库无法识别B表的数据源,因此无法正常执行。

通用兼容写法(支持绝大多数数据库)

使用EXISTS子查询实现关联校验,兼容性最好,不需要适配不同数据库的语法差异,如需调整b_field_1的匹配条件,修改对应B.b_field_1 = 1部分即可:

UPDATE A
SET a_field_1 = 1, a_field_2 = 2
WHERE EXISTS (
    SELECT 1 FROM B 
    WHERE B.b_id = A.b_id AND B.b_field_1 = 1
);
主流数据库专属写法

如果使用的是特定数据库,可以采用对应专属语法,执行效率通常更高:

  • MySQL 多表更新写法
UPDATE A 
INNER JOIN B ON A.b_id = B.b_id
SET A.a_field_1 = 1, A.a_field_2 = 2
WHERE B.b_field_1 = 1;
  • PostgreSQL 写法
UPDATE A
SET a_field_1 = 1, a_field_2 = 2
FROM B
WHERE A.b_id = B.b_id AND B.b_field_1 = 1;
  • SQL Server 写法
UPDATE A
SET A.a_field_1 = 1, A.a_field_2 = 2
FROM A
INNER JOIN B ON A.b_id = B.b_id
WHERE B.b_field_1 = 1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 15:15:03