mysql"ON DUPLICATE KEY UPDATE"语法简析
作者:巩文   发布时间:2014年10月24日  热度:2039℃   评论: 我要评论
[ON DUPLICATE KEY UPDATE用武之地]

如果表里没有则insert,若有了则update就需要用到mysql ON DUPLICATE KEY UPDATE语法;就样就可以在代码里少写if语句来判断了

在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。


[实例讲解]
    表结构
        CREATE TABLE `spk_goods` (
          `gid` int(11) NOT NULL auto_increment COMMENT '货物id',
          `cid` int(11) NOT NULL COMMENT '所属分类id',
          `name` char(30) NOT NULL COMMENT '货物名称',
          PRIMARY KEY  (`gid`),
          UNIQUE KEY `NewIndex1` (`name`)
        ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8

    现有的表记录
    

    那么问题来了,现有一个需求。要求插入一个新的货物。若此货物在表中已经存在,则在货物名称在以前的基础上加一个后缀new;若以不存在此货物,则插入到数据库,用一条sql完成

    测试一:插入表中已有的记录
    sql如下:
    INSERT INTO `spk_goods` (`cid`, `name`)
    VALUES ( '1' , 'apple')
    ON DUPLICATE KEY UPDATE 
    `name` = CONCAT(`name`,'new')

    执行sql查看记录变化

    

    

    测试二:插入表中没有的记录

     sql如下:

    INSERT INTO `spk_goods` (`cid`, `name`)
    VALUES ( '2' , 'wathermelon')
    ON DUPLICATE KEY UPDATE 
    `name` = CONCAT(`name`,'new')
    执行sql查看记录变化

评论 ( 0条 )
昵称: 必填     邮箱: 选填,承诺不会泄漏您的邮箱!
小兔表情
QQ表情
评论