#sql #postgresql
#sql #postgresql
Вопрос:
Я пытался написать запрос PostgreSQL, но у меня испорчен синтаксис. Я думаю, что довольно ясно, что я пытаюсь сделать, просто увидев, как я это написал. В принципе, у меня есть таблица a users
и an invitations
. Для тех, у users
кого нет пароля, я хочу обновить их адрес электронной почты адресом электронной почты в invitations
таблице. Я хочу найти пользователя, просто проверив наличие users
и invitations
совпадение имени и фамилии.
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
Ответ №1:
вы должны иметь возможность указать другую таблицу в поле a 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
Комментарии:
1. нужно просто добавить это в качестве другого предложения (отредактированный ответ)
2. Теперь я вижу проблему. Я ошибся. Мне нужно что-то вроде WHERE NOT EXISTS … В некоторых случаях в записях пользователей уже есть адреса электронной почты, которые совпадают с таблицей приглашений, НО по какой-либо причине имя и фамилия не совпадают. Ошибка запроса при дублировании электронной почты. Для тех, кто я хотел бы просто пропустить их и двигаться дальше.