在搜索网站(和其他人......)之后,我找不到插入命令的示例,允许我将“RETURNING”值存储到表格,CTE等。这就是我想要做的:
WITH insert_rows AS (
INSERT INTO employers (column1, column2, insert_date)
SELECT distinct tc.column1, 'any text', now()
FROM _tmp_employer_updates tc
LEFT JOIN employers e ON e.column1 = tc.column1
WHERE e.column1 IS NULL -- Only insert non-existing employer names
RETURNING employer.row_uuid, employer.column1, employer.column2;
)
SELECT * FROM insert_rows; -- table of returning values
有没有得到一个插入命令来使用CTE将它“返回”值存储到表中?当我尝试上面的例子时,我得到:
错误:“INSERT”或其附近的语法错误 第1行:... _tmp_inserted_employers AS with insert_rows AS(INSERT INT ...
提前致谢...
答案 0 :(得分:1)
在;
之后删除returning ...
,在employer
中的列之前删除别名returning
(或将其更改为employers
)。否则你的查询看起来不错。
以下是 sql fiddle 的示例。