不废话,直接上干货
-----------------------------------------------------------------------------------------------------
postgresql 里upsert 语句的写法,可实现对目标表已有记录则更新,无这条数据记录则进行插入,具体规则如下:
其中目标表table_a
create table table_a(
id int ,
name varchar(256) ,
sex varchar(2) ,
addr varchar(256) ,
primary key(id)
) ;
数据来源表table_b
create table table_b(
id int ,
name varchar(256) ,
sex varchar(2) ,
addr varchar(256)
) ;
以下语句可实现:
若此条数据记录在table_a中已存在(按主键),则将name值替换成table_b里的name值
若此条数据记录在table_a中不存在(按主键),则将此条数据插入到table_a中 ;
insert into table_a(
id ,
name ,
sex ,
addr
)
select
id ,
name ,
sex ,
addr
from table_b
on conflict(id)
do update set
name = excluded.name ,
sex = excludec.sex ,
addr = excluded.addr ;