使用另一个表中的多个字段更新表

时间:2014-12-18 19:14:17

标签: postgresql sql-update concat

我正在尝试通过连接另一个表(certificate_namefirst_namemiddle_name中的3个字段来更新Postgres中名为last_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);

我收到的错误是:

  

内部" ....

的语法错误

我做错了什么?

1 个答案:

答案 0 :(得分: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()