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'

最后的数据为:

相关推荐
小费的部落3 小时前
记 etcd 无法在docker-compose.yml启动后无法映射数据库目录的问题
数据库·docker·etcd
woshilys5 小时前
mysql 删除表等待
数据库·mysql
SEO-狼术5 小时前
dbForge Documenter for Oracle Crack
数据库·oracle
极限实验室6 小时前
如何使用 Grafana 连接 Easyearch
数据库
文or野6 小时前
MySQL 在 CentOS 7 环境安装完整步骤
数据库·mysql·adb
牧羊狼的狼6 小时前
主键索引和唯一索引的区别
数据库·sql·oracle
Justice link6 小时前
部署redis cluster
数据库·redis·缓存
会飞的土拨鼠呀7 小时前
SQL Server AlwaysOn (SQL 查询数据详解及监控用途)
数据库
蜕变的土豆8 小时前
ubuntu22.04下安装mysql以及mysql-workbench
数据库·mysql
notfindjob8 小时前
QT Sqlite数据库-教程001 创建数据库和表-下
数据库·qt·sqlite