Postresql Обновление таблицы с помощью подзапроса из другой таблицы - PullRequest
0 голосов
/ 09 сентября 2018

Я работаю в postgressql и пытаюсь обновить столбец credential_flag в table1 с помощью подзапроса для credential_type в table2. Мой подзапрос работает, но я не могу получить таблицу 1 для корректного обновления. Обе таблицы имеют поле user_id для объединения. Я получаю «синтаксическую ошибку при или близком к соединению» с моим текущим кодом:

UPDATE table1
SET credential_flag =
  (SELECT DISTINCT ON (t2.user_id)
  CASE
  WHEN t2.credential_type LIKE 'AA/AS Degree%' THEN 1
  WHEN t2.credential_type LIKE 'Occupational Skills%' THEN 1
  ELSE 0 
  END 
  FROM t2)
JOIN table1 ON table1.user_id = t2.user_id;

1 Ответ

0 голосов
/ 09 сентября 2018

Вам необходимо использовать синтаксис UPDATE FROM. Из официальной документации :

UPDATE accounts SET contact_first_name = first_name,
                    contact_last_name = last_name
  FROM salesmen WHERE salesmen.id = accounts.sales_id;

В вашем случае это получается так

UPDATE table1
SET credential_flag = (
  CASE
  WHEN t2.credential_type LIKE 'AA/AS Degree%' THEN 1
  WHEN t2.credential_type LIKE 'Occupational Skills%' THEN 1
  ELSE 0 
  END 
)
FROM t2
WHERE table1.user_id = t2.user_id;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...