避免重复添加数据,又需要累加结果的一个需求。
表结构大致是这样子的:
pid, tid 在表中的组合是唯一的,有可能没有该组合;重复插入现有的 pid, tid 组合时,需要累加 count 和 duration 数值。
在网上查了许久,发现了 on duplicate key update 似乎是我想要的,于是写下 sql:
但是只能工作于 pid, tid 组合存在的情况,而且会说 Column 'stat.count' in field list is ambiguous;而没有 pid, tid 组成的时候,也插入不进去。
试一下此方法,把代码贴给你:
#建立pid、tid的UNIQUE INDEX
ALTER TABLE `stat` ADD UNIQUE INDEX `pid_tid_UNIQUE` (`pid`, `tid`);
#没有insert,主键冲突update
insert into stat(pid, tid, count, duration) values(1,5,1,1) on duplicate key update count = count + 1, duration = duration + 1;
on duplicate key update更多语法可参考《INSERT ... ON DUPLICATE KEY UPDATE Syntax》
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。