2015-11-09 112 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";