Я работаю в 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;





Вам нужно использовать синтаксис 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;