下面是一个关于Postgres中的基本数据库查询的问题.
我创建了两个表,如下所示:
create table Prix (rank integer primary key, value bigint unique);
create table Pris (rank integer primary key, value bigint unique);
换句话说,排名和价值都必须是唯一的.
这两个表保存数据:
select * from Prix;
rank | value |
---|---|
1 | 1229 |
2 | 1993 |
select * from Pris;
rank | value |
---|---|
1 | 2719 |
2 | 3547 |
我想知道我应该应用的正确查询,这样表PRI将不变,表Prix将变为:
select * from Prix;
rank | value |
---|---|
1 | 1229 |
2 | 1993 |
3 | 2719 |
4 | 3547 |
表Prix现在是合并的结果,并调整了排名字段.
我try 了一下这些查询(但失败了):
INSERT INTO Prix SELECT * FROM Pris ON CONFLICT DO NOTHING;
INSERT INTO Prix SELECT * FROM Pris ON CONFLICT(rank) SET rank=rank+10;
我明白为什么第一个查询不起作用了.
但第二种方法也不起作用.所以我一定是使用了错误的语法,或者做错了什么.
任何提示或相关信息将不胜感激.