Извинения, если это дубликат (и / или тривиальный) - я не смог хорошо искать из-за незнания 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