Postgresql通过查询进行更新的操作
我就废话不多说了,大家还是直接看实例吧~
UPDATEtb1 SETc1=b.c1, c2=b.c2 FROMb WHEREtb1.c3=b.c3ANDtb1.c4=b.c4
补充:postgresql数据库如果存在则更新(update),如果不存在则插入(insert)
格式:
insertinto......onconflict(column_name)do......
例子:
uxdb=#createtabletbl_c(idintunique,namevarchar(2)); CREATETABLE uxdb=#insertintotbl_cvalues(1,'a'); INSERT01 uxdb=#tabletbl_c; id|name ----+------ 1|a (1row) uxdb=#insertintotbl_cvalues(1,'a'); ERROR:duplicatekeyvalueviolatesuniqueconstraint"tbl_c_id_key" DETAIL:Key(id)=(1)alreadyexists. uxdb=#insertintotbl_cvalues(1,'a')onconflict(id)doupdatesetname='b'; INSERT01 uxdb=#tabletbl_c; id|name ----+------ 1|b (1row) uxdb=#
注意:conflict(column_name)中的column_name必须是主键或具有唯一性才可以
以上为个人经验,希望能给大家一个参考,也希望大家多多支持毛票票。如有错误或未考虑完全的地方,望不吝赐教。