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