如果在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列不存在”。
答案 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;