PostgreSQL基于join执行update更新时触发on附近语法错误如何解决
错误原因
- 语法结构错误:
INNER JOIN关键字后未指定关联表,你已经在FROM子句中声明了关联表well.geo,不需要额外加INNER JOIN关键字 - 别名使用混乱:已经给目标表
well.formation_assignments起别名v、关联表well.geo起别名s,后续字段引用时没有使用别名,重复写全表名导致引用逻辑混乱 - 关联条件写法不符合PostgreSQL UPDATE语法规则:PostgreSQL的UPDATE FROM关联更新语法不需要单独写INNER JOIN关键字,直接通过WHERE子句指定两表关联条件即可
修复后的可执行SQL
UPDATE well.formation_assignments AS v SET Primary_Formation = s.primary_formation FROM well.geo AS s WHERE v.api14 = s.api14;
补充说明
如果你需要使用JOIN写法实现关联更新,可使用如下标准结构:
UPDATE well.formation_assignments AS v SET Primary_Formation = s.primary_formation FROM well.geo AS s INNER JOIN well.formation_assignments AS v_join ON s.api14 = v_join.api14 WHERE v.api14 = v_join.api14;
上述两种写法执行效果完全一致,第一种写法更简洁,适合常规关联更新场景。
内容的提问来源于stack exchange,提问作者Justin Massaro
相关产品推荐
相关产品推荐

