码迷,mamicode.com
首页 > 数据库 > 详细

mysql ON DUPLICATE KEY UPDATE ;

时间:2017-05-27 17:11:44      阅读:235      评论:0      收藏:0      [点我收藏+]

标签:sql   last   values   admin   停止   class   参考   sql语句   logs   

 

需求:

     1)如果admin表中没有数据, 插入一条

  2)如果admin表中有数据, 不插入.

 

一般做法:

 1     if($result = mysql_query("select * from admin"))
 2     {
 3         if(mysql_num_rows($result))
 4         {
 5             echo "<br/>admin表中已经有数据了";
 6         }
 7         else
 8         {
 9             $sql = " insert into admin (`adminName`, `password`, `lastUpdateTime`) values(‘admin‘, ‘1234.asd‘, " .time(). ")";
10             if(mysql_query($sql))
11             {
12                 echo "<br/>admin表中插入一条信息成功";
13             }
14             else
15             {
16                 echo "<br/>admin表中插入一条信息失败";
17             }
18         }
19     }

 

如果用一条sql语句.

INSERT INTO admin (`id`, `adminName`, `password`, `lastUpdateTime`) VALUES (1,‘admin‘, ‘1234.asd‘,1495871878) ON DUPLICATE KEY UPDATE `password` = ‘1234.asd‘

这里 id 是 主键 . 插入的数据必须包含主键 .

第一次执行: 插入一条数据, 影响一行

第二次执行: 发现有重复的值,执行update操作, 但是设置的password仍然相同, 因此update操作停止, 影响 0行.

 

上面设置 插入id不是普遍情况, 更多的是保持其他字段唯一的.

参考:

深入mysql "ON DUPLICATE KEY UPDATE" 语法的分析  

 

mysql ON DUPLICATE KEY UPDATE ;

标签:sql   last   values   admin   停止   class   参考   sql语句   logs   

原文地址:http://www.cnblogs.com/cbza/p/6913411.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!