Postgres SQL использует возвращаемые значения для обновления другой таблицы - PullRequest
0 голосов
/ 17 октября 2018

Извинения, если это дубликат (и / или тривиальный) - я не смог хорошо искать из-за незнания SQL в целом.

На простом английском, что я хочу сделать:

У меня есть таблица table1, для которой некоторая доля столбца matched_id равна NULL.Для этих строк я хочу создать строку в table2, используя значения val1 и val2 из строки table1, а затем вернуть id вновь созданных строк в table2 для обновленияmatched_id значения в table1.

Моя попытка запроса до сих пор создает новые строки в table2 для нужных мне записей, но все значения matched_id строк в table1 всеустановить то же значение (мне кажется, значение из первой вставки) вместо соответствующей строки в table2:

WITH new_ids AS (
    INSERT INTO table2 (val1, val2) SELECT val1, val2
    FROM table1 WHERE matched_id IS NULL RETURNING id)
UPDATE table1 SET matched_id = new_ids.id 
FROM new_ids 
WHERE matched_id IS NULL
...