我想使用on conflict do update-feature将数据从一个表(“tmp”)插入到另一个表(“tbla”)中。 我的代码:
{{1}}
这段代码在“FROM tmp”中给了我一个语法错误 如果没有FROM,则表“错误”:表“tmp”缺少FROM子句条目 关于我做错了什么的建议?
DB-Server在带有postgres 9.5
的Windows 7机器上的localhost上运行答案 0 :(得分:1)
文档“请注意,特殊排除表用于引用最初建议插入的值”https://www.postgresql.org/docs/9.5/static/sql-insert.html
修复:... DO UPDATE SET col1=EXCLUDED.col1;
x=> select * from tbla;
id | col1
----+------
1 | 2
2 | 3
(2 rows)
x=> truncate tmp;
TRUNCATE TABLE
x=> insert into tmp(id,col1) values (1,42);
INSERT 0 1
x=> INSERT INTO tbla(id,col1) SELECT id,col1 FROM tmp -- wrap line
ON CONFLICT (id) DO UPDATE SET col1=EXCLUDED.col1;
INSERT 0 1
sh161119=> select * from tbla;
id | col1
----+------
2 | 3
1 | 42
(2 rows)