1.IGNORE
當使用INSERT語句向表中添加一些行數據並且在處理期間發生錯誤時,INSERT語句將被中止,並返回錯誤消息。因此,可能不會向表中沒有插入任何行。
但是,如果使用INSERT INGORE語句,則會忽略導致錯誤的行,並將其余行插入到表中。
insert IGNORE into table(xxx,xxx) VALUES (xxx,xxx);
insert IGNORE into `test` (`id`,`name`,`times`,`add_time`)VALUES
('1','woq','3','1529304418'),
('2','woa','4','1529304452'),
('3','woz','5','1529304425'),
('4','wow','6','1529304445');
2.REPLACE INTO
如果發現表中已經有此行數據(根據主鍵或者唯一索引判斷)則先刪除此行數據,然后插入新的數據。
否則,直接插入新數據。
要注意的是:插入數據的表必須有主鍵或者是唯一索引!否則的話,replace into 會直接插入數據,這將導致表中出現重復的數據。
REPLACE into `test` (`id`,`name`,`times`,`add_time`)
VALUES
('1','woq','3','1529304418'),
('2','woa','4','1529304452'),
('3','woz','5','1529304425'),
('4','wow','6','1529304445');
使用注意事項:
https://yq.aliyun.com/articles/57855
3.ON DUPLICATE KEY UPDATE
ON DUPLICATE KEY UPDATE 語法並不是MySQL的標准語法,如果在句尾指定該語法,他會根據指定的主鍵或者唯一標示來更新數據庫的內容
具體的操作是想根據唯一標示查看數據庫是否存在該記錄,如果存在該記錄就更新,如果不存在就會插入一條新的記錄,
INSERT INTO test (`id`,`name`,`times`,`add_time`) VALUES ('1','kk','4','1531282881') ON DUPLICATE KEY UPDATE `add_time`='1531284238';