2014-12-18 119 views
0

我试图通过连接来自另一个表(first_name,middle_name,middle_name,last_name)的3个字段来更新Postgres中的表中的字段certificate_name。我已经尝试过几次发言,但都发生了错误;我最近尝试了以下内容:更新表与另一个表中的多个字段

update candidate_attributes ca 
inner join "user" u on u.id=ca.candidate_user_id 
set ca.certificate_name = concat(u.first_name, u.middle_name, u.last_name); 

我收到一个错误,指出:

达到或接近“内部”语法错误....

上午什么我做错了?

+0

是的,这是一个语法错误...查看'update'语法。你不能在这里使用'inner join';你应该'更新用户'。 –

+0

每个源列都可以为NULL吗?如果在源表中找不到行,会发生什么情况? –

回答

0

您的语法在Postgres中无效。类似于SQL Server语法。

Read the manual on UPDATE和使用,而不是:

UPDATE candidate_attributes ca 
SET certificate_name = concat_ws(' ', u.first_name,u.middle_name,u.last_name) 
FROM "user" u 
WHERE u.id = ca.candidate_user_id; 

我也扔在concat_ws()而不是concat(),假设你想要的名称各部分之间的空间。

相关问题