2015-11-09 60 views
1

我正在嘗試使用臨時表來更新表。PostgreSQL查詢 - 列不存在

Schema |   Name   | Type | Owner 
------------+----------------------+----------+---------- 
pg_temp_11 | tmp_x    | table | postgres 
public  | entities    | table | postgres 

但是我得到這個錯誤:

UPDATE entities SET "Name" = "tmp_x.Name" FROM tmp_x WHERE "entities.Ent_ID" = "tmp_x.Ent_ID"; 
ERROR: column "tmp_x.Name" does not exist -- the column Name exists 
LINE 1: UPDATE entities SET "Name" = "tmp_x.Name" FROM tmp_x WHERE "... 

問題是什麼?圍繞表格列的引號?

+0

錯誤的語法我認爲...'update e set e.name = x.name from實體e內部連接tmp_x x ON e.Ent_ID = x.Ent_ID' –

+0

停止使用帶引號的標識符。他們比他們值得的更麻煩。 –

+0

@a_horse_with_no_name,當使用像Ent_ID這樣的表列時選項是什麼,而不是ent_id – anvd

回答

5

您正在使用雙引號括住多個單獨的對象。如果您使用的是對象分隔符(雙引號),它們需要位於每個項目上,而不是整個組合上:

UPDATE entities SET "Name" = "tmp_x"."Name" FROM tmp_x WHERE "entities"."Ent_ID" = "tmp_x"."Ent_ID";