mysql中实现没有数据则新增,存在则更新
  1egCrR6gnZcE 2023年11月02日 44 0

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);
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

1egCrR6gnZcE