批量插入,存在则修改,不存在则插入
INSERT INTO 表名 (字段1,字段2,字段3,字段4) VALUES (字段1值,字段2值,字段3值,字段4值) ON DUPLICATE KEY UPDATE 存在时需要修改的字段 = 字段值;
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。 注意: ON DUPLICATE KEY UPDATE只是MySQL的特有语法,并不是SQL标准语法!
INSERT INTO ... ON DUPLICATE KEY UPDATE ...,只UPDATE重复记录,不会改变其它字段
例如: DROP TABLE IF EXISTS `User`; CREATE TABLE `User` ( `id` int(11) NOT NULL, `name` varchar(255) DEFAULT NULL, `email` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO User (id,name,email) VALUES (1,'nick','nick@126.com'), (4,'angel','angel@163.com'), (7,'brank','ba198@126.com');
方法一: INSERT INTO t_member (id,email) VALUES (1, (4, (7,'ba198@126.com') ON DUPLICATE KEY UPDATE name = VALUES(name),email = VALUES(email); 如果存在则将name和email用对应name和email值替换
方法二: INSERT INTO t_member (id,'ba198@126.com') ON DUPLICATE KEY UPDATE name = 'name1',email = '1232@qq.com'; 如果存在则将name用name1替换,email用1232@qq.com值替换
? (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|