很抱歉,如果这是重复的(和/或琐碎的事)-由于总体上对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