mysql中实现没有数据则新增,存在则更新

MySQL插入数据时如果存在就更新,不存在就插入表格结构如下:

更新/插入数据

知道唯一索引的值

mysql语法支持数据存在更新,不存在插入。判断的依据是唯一索引的字段是否冲突,如果冲突,则执行更新操作;如果没有冲突,则执行插入操作。对于本文中的例子就是主键id、分组group_id和分卷序号fen_juan_xu_hao。
那么可以使用DUPLICATE、REPLACE INTO方式处理数据。

DUPLICATE

语法

INSERT INTO 表名(唯一索引列, 列2, 列3) VALUE(值1, 值2, 值3) ON DUPLICATE KEY UPDATE 列=值, 列=值
INSERT INTO file_temp (id, file_name, group_id, bucket_name, original, type, file_size,
										  fen_juan_size,
										  fen_juan_xu_hao, zhuang_tai, create_user, update_time, tenant_id)
		VALUES (1714455010759065613, /minio/file/ceShi/测试.zip, 00-001-0001, ceShi, 测试.zip, zip,
				117617757, 118062248, 0, '成功', 1, 2023-10-18 10:49:54, 2023-10-18 10:49:54)
ON DUPLICATE KEY UPDATE fen_juan_xu_hao= 1,update_time=current_timestamp();

REPLACE INTO

语法

REPLACE INTO 表名称(列1, 列2, 列3) VALUES(值1, 值2, 值3)
REPLACE INTO file_temp (id, file_name, group_id, bucket_name, original, type, file_size,
										  fen_juan_size,
										  fen_juan_xu_hao, zhuang_tai, create_user, update_time, tenant_id)
		VALUES (1714455010759065613, /minio/file/ceShi/测试.zip, 00-001-0001, ceShi, 测试.zip, zip,
				117617757, 118062248, 0, '成功', 1, 2023-10-18 10:49:54, 2023-10-18 10:49:54)

并不知道唯一索引的值,只想插入/更新符合某些条件的数据

如果不知道主键id的情况下,根据部分条件查找进行插入或更新数据,比如:类型是zip的和分卷序号为0的,但并不知道这条数据在或者不在,也不知道主键id的情况
插入语句

INSERT INTO file_temp (id, file_name, group_id, bucket_name, original, type, file_size,
										  fen_juan_size,
										  fen_juan_xu_hao, zhuang_tai, create_user, update_time, tenant_id)
		VALUES (1714455010759065613, /minio/file/ceShi/测试.zip, 00-001-0001, ceShi, 测试.zip, zip,
				117617757, 118062248, 0, '成功', 1, current_timestamp(), 2023-10-18 10:49:54)
from DUAL  
where not exists(select id from file_temp where type = '.zip' and fen_juan_xu_hao = 0); 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值