POSTGRESQL table name specified more than once

背景

     我们可以用UPDATE SET FROM WHERE 语句来关联表更新数据。例如:有这样一个需求:两个表A和B,想使A中某些字段值等于B表中对应ID的字段值。如果update语句如下,会出现 table name specified more than once错误

UPDATE A SET A.A1 = B.B1, A.A2 = B.B2, A.A3 = B.B3 FROM  A,B WHERE A.ID = B.ID

解决办法 

    将FROM后面的A,B改为B即可。即被更新的表名不要出现在FROM后面。

如果需要更新多个字段的话使用:

UPDATE A  SET A.A1 = B.B1, A.A2 = B.B2, A.A3 = B.B3  FROM B LEFT JOIN B ON A.ID = B.ID

或者:

UPDATE A SET A.A1 = B.B1, A.A2 = B.B2, A.A3 = B.B3 FROM  B WHERE A.ID = B.ID

    

猜你喜欢

转载自blog.csdn.net/qq_22310551/article/details/83181241