插入数据主键重复或数据已经存在,则更新这条数据了这个可以使用ON DUPLICATE KEY UPDATE了,下面我们来看一下如何实现我们需要的要求。
在做数据库开发的时候,经常会遇到这样的一种情景:
当一条数据不存在的时候,插入这条数据,如果这条数据的主键已经在数据库中存在,那么更新这条数据。
你们一般怎么做呢?先根据主键查询数据,然后判断是否存在数据,如果存在数据,则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用于记录微信易信粉丝的状态),下面图片中显示的就是这段代码,看到这个,你就懂了吧?