Синтаксис запроса PostgreSQL

#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 … В некоторых случаях в записях пользователей уже есть адреса электронной почты, которые совпадают с таблицей приглашений, НО по какой-либо причине имя и фамилия не совпадают. Ошибка запроса при дублировании электронной почты. Для тех, кто я хотел бы просто пропустить их и двигаться дальше.