-
insert 语句可以加入ignore 避免唯一索引报错,并且正确插入唯一索引不冲突的数据,唯一索引冲突则不插入不报错
INSERT IGNORE INTO t_user_info ( id, NAME, age ) VALUES ( 1, '张三', 19 ), ( 2, '张三', 19 ), ( 2, '张三', 19 ); /* id为主键,仅能插入两条数据但是不会报错 输出 INSERT IGNORE INTO t_user_info ( id, NAME, age ) VALUES ( 1, '张三', 19 ), ( 2, '张三', 19 ), ( 2, '张三', 19 ) > Affected rows: 2 > 时间: 0.01s */ # update语句也可以用(update后主键id冲突) UPDATE IGNORE t_user_info SET id = id + 1 WHERE id = 1;
-
插入一条数据,存在就更新,不存在就插入(必须现有唯一键)
-
使用INSERT…ON DUPLICATE KEY UPDATE
INSERT INTO t_user_info ( id, NAME, age ) VALUES ( 5, '张三', 19 ) ON DUPLICATE KEY UPDATE id = id + 1; # 也可以update id以外的其他字段 INSERT INTO t_stu ( id, student_no, name, age, addr ) VALUES ( 2, '2021410236', '钱琦', 21, '张掖' ) ON DUPLICATE KEY UPDATE id = id + 1, NAME = VALUES( name ), age = VALUES( age ); # 或 INSERT IGNORE INTO t_stu ( id, student_no, NAME, age, addr ) VALUES ( 3, '2021410236', '赵四', 21, '和田' ) ON DUPLICATE KEY UPDATE age = 1,name = '孙九'; # id为主键 # 当id=5的记录存在时则执行UPDATE id = id + 1,类似UPDATE t_user_info set id = id +1 WHERE id = 1; # 和IGNORE联合使用时,当ON DUPLICATE KEY UPDATE id = id + 1中的" id + 1 "和现有其他记录id冲突时则插入和更新都失败
-
使用REPLACE关键字
REPLACE INTO t_user_info ( id, NAME, age ) VALUES ( 1, '张三', 190 ); # id为主键 # 当id=1的记录存在时会先删除原来id=1的记录,再插入sql中的记录 # 如果id和name都为唯一索引和主键,且存在id=1和name=张三的条记录则先删除这两条记录再插入sql中的一条记录 #如果没有唯一索引,直接插入sql中的记录
-
MySQL新增数据,存在就更新,不存在就添加以及主键冲突忽略异常
最新推荐文章于 2024-04-16 08:06:19 发布