これが重複している(および/または些細な)場合はお詫びします-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