mysql实现upsert(没有就新增,有就修改)
目录
写在前面
建表准备
upsert语句
总结
写在前面
当实际工作中遇到这么一种需求:数据库没有这条数据,我需要新增,有这条数据我需要修改,或者某个字段的数量进行调整。
那么我们就可以考虑使用mysql的upsert语句了。
建表准备
CREATE TABLE `student` (`id` varchar(50) NOT NULL DEFAULT '',`name` varchar(50) DEFAULT NULL,`age` int(11) DEFAULT NULL,`sign` int(11) DEFAULT NULL COMMENT '签到次数',PRIMARY KEY (`id`),UNIQUE KEY `inx_id` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
upsert语句
INSERT INTO student ( id, NAME, age, sign )
VALUES( '1', '张三', 18, 1 ) ON DUPLICATE KEY UPDATE NAME = '李四';
当我们第一次执行的时候,会发现影响行数是1:

此时数据库里面的数据:

当我们第二次执行的时候,发现影响行数是2:

此时数据库中的数据:
我们可以看到数据已经发生改变了。
现在执行下面的sql:
INSERT INTO student ( id, NAME, age, sign )
VALUES( '1', '张三', 18, 1 ) ON DUPLICATE KEY UPDATE sign = sign+1;
我们可以看到影响行数是2:

此时数据库中的数据:

总结
mysql的upsert语句,其实就是根据唯一的主键(也可以是联合主键)判断的,如果没有的话就新增,如果有的话就按照主键来修改。
关键语句:
使用 ON DUPLICATE KEY UPDATE
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
