2016-09-30 54 views
0

我試着編寫一個PostgreSQL查詢,但我已經搞亂了語法。我認爲我很清楚自己想要做什麼,只是看到了我寫的方式。基本上我有一個users和一個invitations表。對於任何沒有密碼的users,我想用invitations表中的電子郵件地址更新他們的電子郵件地址。我想通過簡單地檢查具有匹配姓氏和姓氏的usersinvitations來找到用戶。PostgreSQL查詢的語法

UPDATE users 
SET users.email = invitations.parent_email 
WHERE users.encrypted_password = '' 
AND invitations.first_name = users.first_name 
AND invitations.last_name = users.last_name 

回答

0

你應該能夠在FROM字段中指定另一個表,然後以這種方式進行更新/連接。

UPDATE users 
SET email = invitation.parent_email 
FROM invitation 
WHERE users.encrypted_password = '' AND 
     users.first_name = invitation.first_name AND 
     users.last_name = invitation.last_name AND 
     users.email <> invitation.parent_email 
+0

應該只是可以添加爲另一個條款(編輯答案) – Doon

+0

我現在看到問題。我錯了。我需要類似WHERE NOT EXISTS的東西......在某些情況下,用戶中有記錄的電子郵件地址已經與邀請表相同,但無論出於何種原因名和姓都不相同。該查詢在重複的電子郵件上失敗。對於那些我想跳過他們繼續前進的人。 –