2014-12-18 187 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(),假設你想要的名稱各部分之間的空間。

相關問題