如何在postgresql中,一句sql完成未有数据记录的insert,再update的操作


下面是sql语句:

insert into jd_api_data_20200116 (id,name) select id,city from province_and_city as a where id = 1 on conflict(id) do update set name = EXCLUDED.name;

 

详解:

首先呢,基础语法是这样的:

insert into xxx on conflict(pkkey) do xxx;

这是一个插入语句触发器(需要一个主键或者唯一索引),当原本数据库有这条唯一索引的数据时,执行触发器后语句,否则执行insert语句.

 

然后呢,上面这句,先执行select 查询语句,查询该id对应的记录的id,city字段值,然后执行insert语句,将查询的字段值insert到新表中,如果已存在该记录,那么执行do触发器后的update语句.

这里update语句中的EXCLUDE.xxx表示前面查询语句对应的字段值


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM