创建案例表 word_count_0626(单词计数表)
CREATE TABLE IF NOT EXISTS word_count_0626 (
id int(11) NOT NULL AUTO_INCREMENT,
word varchar(64) NOT NULL,
count int(11) DEFAULT 0,
date date NOT NULL,
`remark` varchar(100) DEFAULT NULL,
PRIMARY KEY (id),
UNIQUE KEY word (word, date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
1. 执行第一次:(首次数据库表中没有数据,正常插入)
insert into word_count_0626 (word, count, date,remark) values
('a',5,curdate(),'这是第一次')
on duplicate key update count=values(count),remark=values(remark);
2. 执行第二次:(与第一次的唯一(word,date)冲突,执行更新)
insert into word_count_0626 (word, count, date,remark) values
('a',6,curdate(),'这是第二次')
on duplicate key update count=values(count),remark=values(remark);
3. 执行第三次:// 取前一天,不会冲突
insert into word_count_0626 (word, count, date,remark) values
('a',6,curdate()-1,'这是第一次')
on duplicate key update count=values(count),remark=values(remark);
4、批量执行,如果根据唯一索引查,存在就修改,否则就新增数据
insert into word_count_0626 (word, count, date,remark) values
('a',8,curdate(),'这是第三次'), ('a',9,curdate()-1,'这是第三次'),
('b',11,curdate(),'这是第一次'), ('b',12,curdate()-2,'这是第一次')
on duplicate key update count=values(count),remark=values(remark);
验证结果,目的达到了。