SQL语句如何实现没有这条数据就添加,有这条数据就修改

如一张表有两个字段id和n,如果存在某个id,就将这个id对应的n值加1;不存在就将向表中插入这个id并把n的值设置成0

阅读 9.8k
2 个回答

提供一个我之前遇到的一个案例,给你参考:
CASE:
统计呼叫中心客服每一天的通话数量及时长
DESCRIPTION:
每天每位客服,只产生一条记录来统计通话时长和次数,这样就需要,相应记录存在就更新,不存在就插入
SOLUTION:
INSERT INTO kjrs_crm2.crm_wavtime(time_info,number_info,ext,update_time)VALUES(‘26’,’2’,’812’,’1433433600’),(‘1395’,’4’,’820’,’1433433600’),(‘190’,’2’,’975’,’1433433600’) ON DUPLICATE KEY UPDATE time_info=VALUES(time_info),number_info=VALUES(number_info),ext=VALUES(ext),update_time=VALUES(update_time)
NOTICE:
还有其它解决方法,但是都没有INSERT INTO … ON DUPLICATE KEY UPDATE …更好;
REPLACE INTO : 如果存在已有记录,将先删除,再插入新数据,效率低,同时会使主键id不断增大;
先SELECT,再确定UPDATE还是INSERT INTO: 效率低,代码量大
http://nixus.leanote.com/post/Untitled-551a488338f41114e8000e97-12

ON DUPLICATE KEY UPDATE

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题