背景
我们可以用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