PostgreSQL数据库解决不存在就插入数据,存在就更新这个单元格的数据

文章目录

解决方法

假如列1重复,就要更新列2,则使用sql:

sql 复制代码
INSERT INTO "public".表名称 ("列1", "列2")
VALUES('列1值','新的列2值') 
ON CONFLICT ("列1")
DO UPDATE SET "列2"= '新的列2值' -- 这里把col_2这一列的数据赋值为'5555'

示例程序

对于这样的数据,以"col_1"为主键,则新插入一个数据:

sql 复制代码
INSERT INTO "public".test_table ("col_1", "col_2")
VALUES('1','5555') 

会报错重复键违反唯一约束"col_1"

情况1:当存在数据时跳过,不操作

这时候sql语句是:

sql 复制代码
INSERT INTO "public".test_table ("col_1", "col_2")
VALUES('1','5555') 
ON CONFLICT (col_1) -- 这里是写法是 ON CONFLICT (重复列名称)
DO NOTHING; -- 这里是如果出现冲突的操作,不操作就写 DO NOTHING

情况2:当存在数据时,更新这个单元格

这时的sql语句是:

sql 复制代码
INSERT INTO "public".test_table ("col_1", "col_2")
VALUES('1','5555') 
ON CONFLICT (col_1)
DO UPDATE SET "col_2"= '5555' -- 这里把col_2这一列的数据赋值为'5555'

最后的数据为:

相关推荐
biubiuibiu4 分钟前
探秘新飞机:从包装到起飞的全程指南
数据库·python
专注VB编程开发20年21 分钟前
SQL SERVER数据库DTE加密和字段加密
数据库·sql server
pupudawang32 分钟前
MySQL中日期和时间戳的转换:字符到DATE和TIMESTAMP的相互转换
数据库·mysql
V1ncent Chen36 分钟前
SQL大师之路 12 函数基础
数据库·sql·mysql·数据分析
焚 城42 分钟前
SQL PARTITION BY用法
数据库·sql
剑锋所指,所向披靡!1 小时前
设计数据库
数据库
暮冬-  Gentle°1 小时前
Python内存管理机制:垃圾回收与引用计数
jvm·数据库·python
阿贵---1 小时前
使用PyQt5创建现代化的桌面应用程序
jvm·数据库·python
wertyuytrewm1 小时前
高级爬虫技巧:处理JavaScript渲染(Selenium)
jvm·数据库·python
一叶飘零_sweeeet2 小时前
MySQL高可用生产落地全解:主从同步、MGR集群、读写分离从原理到实战
数据库·mysql·架构·mysql高可用