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

    

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章