批量插入,存在則修改,不存在則插入
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', '[email protected]'),
(4, 'angel','[email protected]'),
(7, 'brank','[email protected]');
方法一:
INSERT INTO t_member (id, name, email) VALUES
(1, 'nick', '[email protected]'),
(4, 'angel','[email protected]'),
(7, 'brank','[email protected]')
ON DUPLICATE KEY UPDATE name = VALUES(name), email = VALUES(email);
如果存在則將name和email用對應name和email值替換
方法二:
INSERT INTO t_member (id, name, email) VALUES
(1, 'nick', '[email protected]'),
(4, 'angel','[email protected]'),
(7, 'brank','[email protected]')
ON DUPLICATE KEY UPDATE name = 'name1', email = '[email protected]';
如果存在則將name用name1替換,email用[email protected]值替換
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/174712.html
標籤:MySQL
