美文网首页java专题
mysql实现upsert功能

mysql实现upsert功能

作者: H_Man | 来源:发表于2018-01-23 20:00 被阅读248次

    可以在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;
    

    相关文章

      网友评论

        本文标题:mysql实现upsert功能

        本文链接:https://www.haomeiwen.com/subject/wureaxtx.html