mysql实现upsert功能

可以在INSERT INTO…..后面加上 ON DUPLICATE KEY UPDATE方法来实现。如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。
例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:

INSERT INTO `table` (`a`, `b`, `c`) VALUES (1, 2, 3) ON DUPLICATE KEY UPDATE `c`=`c`+1; 
UPDATE `table` SET `c`=`c`+1 WHERE `a`=1;

如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。
注释:如果列b也是唯一列,则INSERT与此UPDATE语句相当:

UPDATE `table` SET `c`=`c`+1 WHERE `a`=1 OR `b`=2 LIMIT 1;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.脑海中对爷爷的记忆,着实不多了!对他的记忆只定格在,爷爷六十岁左右的年纪!只记得得他中等身材,背有点驼,手里拿...
    GreatWall_Z阅读 577评论 1 5
  • 用@Singleton做实验,看编译后生成的代码:猜测这句与单例有关: 进ScopedProvider: 我擦,这...
    风中追风_阅读 509评论 0 0
  • 在这晴朗的下午看一半水暖一半水寒看荷之残景看风织涟漪破败竟也让人心生欢喜春天就要来了春天在路上春天还没走到眼前就已...
    Bohemian_e6af阅读 200评论 0 4