避免重复添加数据,又需要累加结果的一个需求。表结构大致是这样子的:ColumnTypeCommentsidint(11)自增主键pidint(11)p标识tidint(11)t标识countint(11)出现次数durationint(11)时延pid,tid在表中的组合是唯一的,有可能没有该组合;重复插入现有的pid,tid组合时,需要累加count和duration数值。在网上泡了许久,发现了onduplicatekeyupdate似乎是我想要的,于是写下sqlinsertintostat(pid,tid,count,duration)(selectpid,tid,count,durationfromstatwherepid=1andtid=5)onduplicatekeyupdatestat.count=stat.count+1,stat.duration=stat.duration+1;但是只能工作于pid,tid组合存在的情况,而且会说Column'stat.count'infieldlistisambiguous;而没有pid,tid组成的时候,也插入不进去。囧囧有神,求sql大神包养~
2 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
题主试试:#建立pid、tid的UNIQUEINDEXALTERTABLE`stat`ADDUNIQUEINDEX`pid_tid_UNIQUE`(`pid`,`tid`);#没有insert,主键冲突updateinsertintostat(pid,tid,count,duration)values(1,5,1,1)onduplicatekeyupdatecount=count+1,duration=duration+1;onduplicatekeyupdate
添加回答
举报
0/150
提交
取消