在做数据库开发的时候,经常会遇到这样的一种情景:

当一条数据不存在的时候,插入这条数据,如果这条数据的主键已经在数据库中存在,那么更新这条数据。

你们一般怎么做呢?先根据主键查询数据,然后判断是否存在数据,如果存在数据,则update字段,否则insert数据。

这样做的弊端就是需要两次连接数据库服务器,然后利用高级语言来判断是否存在的逻辑。

下面教你一条SQL语句,教你解决这类问题!

例如数据表weixin_user的表结构如下所示:

$sql = "insert into weixin_user(wx_id, wx_name, wx_state, wx_info, wx_lasttime) values ('$wx_id', '$wx_name', '$wx_state', '$wx_info', NOW()) ON DUPLICATE KEY UPDATE wx_name='$wx_name', wx_state = '$wx_state', wx_info = '$wx_info', wx_lasttime = NOW();";

上面这段SQL语句,是本博客的微信和易信接口开发代码中的一条SQL语句(weixin_user用于记录微信易信粉丝的状态),下面图片中显示的就是这段代码,看到这个,你就懂了吧?

ON DUPLICATE KEY UPDATE(当出现DUPLICATE KEY主键重复错误的时候触发Update操作,当然要求就是表在设计的时候一定要有主键primary key

具体的效果是什么?本微信号就在使用,你关注一下就知道了...