多条件JOIN更新test表netto字段报错:表名重复指定
PostgreSQL UPDATE JOIN 表名重复报错的解决方法
问题原因
你写的SQL语句里,UPDATE子句已经指定了目标表test,又在FROM子句里再次引用了test,导致数据库无法区分重复的表引用,因此抛出ERROR: table name specified more than once错误。
修正后的SQL语句
方式一:简化关联逻辑(推荐)
直接通过FROM引入co表,用WHERE条件关联两张表:
UPDATE test SET netto = co.lv FROM co WHERE test.sp = co.sp AND test.ver = co.ver;
方式二:使用表别名区分重复引用
如果偏好JOIN语法,给FROM里的test表设置别名,避免重复冲突:
UPDATE test SET netto = co.lv FROM co JOIN test t ON t.sp = co.sp AND t.ver = co.ver WHERE test.sp = t.sp AND test.ver = t.ver;
执行结果
执行上述任意语句后,test表会被正确更新为你期望的结果:
| sp | ver | netto |
|---|---|---|
| A | X | F |
| B | Y | G |
| C | Z | H |
内容的提问来源于stack exchange,提问作者Diego Santiago
相关产品推荐
相关产品推荐

