postgres SQL使用返回值更新另一个表

时间:2018-10-17 18:06:26

标签: sql postgresql postgres-9.6

很抱歉,如果这是重复的(和/或琐碎的事)-由于总体上对SQL不熟悉,我无法很好地进行搜索。

简而言之,我想做什么:

我有一个表table1,其中matched_id列的一部分是NULL。对于这些行,我希望使用table2行中的值val1val2table1中创建一行,然后返回该行中的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

0 个答案:

没有答案