如何使用WITH查询插入表中并将返回ID插入另一个表中?

时间:2019-04-21 18:56:48

标签: sql postgresql

如果在table2中仅存在“值”,我试图在名为table1的表中插入一行。新创建的行返回一个ID,我想通过WITH查询使用此ID,并将其插入名为table3的第三个表中。

这是我使用的sql语句。

WITH new_key AS (
    INSERT INTO table1(name, value) 
    SELECT 'test', value
        FROM table2 
    WHERE value = 'some_value'
    RETURNING id
)
INSERT INTO table3(table1_id) 
VALUES (new_key);

WITH查询中的INSERT查询有效并返回ID。不幸的是,整个语句返回“ new_key列不存在”。

1 个答案:

答案 0 :(得分:1)

您需要从CTE中选择值:

WITH new_key AS (
    INSERT INTO table1(name, value) 
    SELECT 'test', value
        FROM table2 
    WHERE value = 'some_value'
    RETURNING id
)
INSERT INTO table3(table1_id) 
SELECT id
FROM new_key;