存在 | 不存在 | |
---|---|---|
insert ignore | 忽略 | 插入 |
insert into | 報錯 | 插入 |
replace into | 替換 | 插入 |
表要求:插入的數據中存在,PrimaryKey,或者unique索引的字段;
結果:表id都會自增
replace into
:替換插入的原理是:如果存在,先刪除數據,再插入一條新的記錄到表中,自增主鍵的值會增加。
INSERT IGNOR
:忽略插入的原理是:如果存在,原先對應的主鍵或者唯一鍵,不管其他字段的值有無變化,之前對應的這條數據都不會變化。
# 實列
INSERT IGNORE INTO `caiwu` (`name`,`money`) VALUES('王五','200')
INSERT INTO `caiwu` (`name`,`money`) VALUES('王五','200')
REPLACE INTO `caiwu` (`name`,`money`) VALUES('王五','200')
ALTER TABLE caiwu ADD UNIQUE KEY name_unique (`name`)
如果沒有主鍵或者唯一鍵可根據下面的sql,進行判斷更新還是操作;
INSERT INTO `caiwu` (`name`,`money`) SELECT '王五','200' FROM DUAL WHERE NOT EXISTS
(SELECT * FROM caiwu WHERE `name` = '王五' AND `money` = 200 )