抱歉,如果这是重复的(和/或微不足道的) - 由于一般不熟悉 SQL,我无法很好地搜索。
用简单的英语我想做什么:
我有一个表table1
,其中matched_id
列的一部分是NULL
. 对于这些行,我希望在table2
使用值val1
和val2
从行中创建table1
一行,然后返回id
新创建的行的 s以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