postgres筛选出两表中不同的数据并将其插入目标表中
背景
同一个材料数据有不同的版本,各版本的数据结构都相同。
上传文件时数据将会插入到表A中,从表A中查出的数据返回到页面进行标记。
但是上传一个版本的文件,数据就会插入到A表中,造成了数据的重复。
因此去重的逻辑为文件上传一次,删除A表中该材料的所有数据后将新数据插入,这就引出了下一个问题:文件每上传一次都需要重新标记。
解决每次上传需要重新标记的方法
- 新建一个临时表A_tmp,将上传文件中的数据插入该表。
- 使用关键字except关联A表与A_tmp表,筛选出其中不同的数据。
- 将该数据插入A表。
实现
insert into A
select * from(
select * from A_tmp
except
select * from A
)a;