PostgreSQL内连接更新字段报错:表"TblFacultyMaster"被多次指定
解决PostgreSQL中UPDATE语句表名重复指定的错误
嘿,这个问题我碰到过好几次啦,本质是你在UPDATE语句里重复引用了目标表导致的,咱们来一步步解决它:
错误原因分析
你写的SQL里,UPDATE后面已经指定了目标表"TblFacultyMaster",但又在FROM子句的INNER JOIN里再次引用了这个表,这就导致PostgreSQL无法区分这两个相同的表引用,所以抛出了ERROR: table name "TblFacultyMaster" specified more than once的错误。
修正后的SQL语句
只需要把FROM子句里多余的"TblFacultyMaster"关联去掉,直接用FROM指定要关联的teacher_details表,再通过WHERE条件建立关联即可:
UPDATE "TblFacultyMaster" SET teacher_id = teacher_details.teacher_id FROM teacher_details WHERE "TblFacultyMaster"."IMR" = teacher_details.primary_reg_no;
补充说明
如果你的关联字段在两张表中有相同的名称,还可以用更简洁的USING子句写法(不过你的场景里字段名是IMR和primary_reg_no,所以不适用这个写法,但可以了解下):
-- 仅当关联字段名相同时可用 UPDATE target_table SET column = other_table.column FROM other_table USING (common_column);
内容的提问来源于stack exchange,提问作者Shrey Raj
相关产品推荐
相关产品推荐

