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'

最后的数据为:

相关推荐
paopaokaka_luck11 分钟前
基于SpringBoot+Vue的酒类仓储管理系统
数据库·vue.js·spring boot·后端·小程序
薛晓刚1 小时前
哪个领域数据库最难替换?
数据库
芷栀夏1 小时前
基于Anything LLM的本地知识库系统远程访问实现路径
数据库·人工智能
软件2052 小时前
【redis使用场景——缓存——数据淘汰策略】
数据库·redis·缓存
ChinaRainbowSea2 小时前
9-2 MySQL 分析查询语句:EXPLAIN(详细说明)
java·数据库·后端·sql·mysql
时序数据说2 小时前
Java类加载机制及关于时序数据库IoTDB排查
java·大数据·数据库·物联网·时序数据库·iotdb
deeper_wind2 小时前
MySQL数据库基础(小白的“升级打怪”成长之路)
linux·数据库·mysql
加勒比海涛2 小时前
Spring Cloud Gateway 实战:从网关搭建到过滤器与跨域解决方案
数据库·redis·缓存
belldeep2 小时前
java:如何用 JDBC 连接 TDSQL 数据库
java·数据库·jdbc·tdsql
格调UI成品4 小时前
预警系统安全体系构建:数据加密、权限分级与误报过滤方案
大数据·运维·网络·数据库·安全·预警