MySQL api

今天看去年年中写的代码,留意到一个关键时刻能提高效率的api:on duplicate key update;

语法:

INSERT INTO INSERT INTO g_iot_user_building
()
VALUES()

ON DUPLICATE KEY UPDATE
a='a',
b='b';

 

当你想向某个表中插入数据,同时保证该条数据在表中不存在时,可使用上面这个方法;

值得注意的是,该方法是mysql特有,并不是sql通用,所以使用的时候需要区别使用;

使用场景:

调用钉钉人员相关接口,同步人员信息到本地数据库,此时,需要注意的是 判断钉钉接口返回的人员信息是否已存在于数据库中,还是新加入的人员;

 

此时,如果使用轮询去判断,则稍显繁琐,可使用 on duplicate key update语法,

需要留心的是,需要为用户的userid为设置UNIQUE索引(该键唯一,来源钉钉api),这样,即可满足:若数据库已有该人员信息,则更新,若没有该人员信息,则插入数据到表;

 

解释:

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

 

posted @ 2017-05-22 19:14  it馅儿包子  阅读(216)  评论(0编辑  收藏  举报