文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>存在该记录则更新,不存在则插入的sql

存在该记录则更新,不存在则插入的sql

时间:2006-03-08  来源:zyrf2001

6.4.3 INSERT 句法 INSERT INTO  tbl_name [(col_name,...)]
        VALUES ((expression | DEFAULT),...),(...),...
         ON DUPLICATE KEY UPDATE col_name=expression, ...
如果你指定 ON DUPLICATE KEY UPDATE 子句(在 MySQL 4.1.0 中被新加入),并且被插入的一个记录行在 PRIMARY
或 UNIQUE 键上将会产生一个重复值,那么老的记录行将被 UPDATE。举例来说:
mysql> INSERT INTO table (a,b,c) VALUES (1,2,3)
   --> ON DUPLICATE KEY UPDATE c=c+1;
假设列 a 被定义为 UNIQUE,并且已存在了一个 1,它将与下面的语句产生同样的结果:
mysql> UPDATE table SET c=c+1 WHERE a=1;
注意:如果列 b 也是唯一的,UPDATE 命令将要被写成这样:
mysql> UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;
并且如果 a=1 OR b=2 匹配几个记录行,只有 一个 记录行将被更新!大体上,在有多重 UNIQUE 键的表上,
你应该尽是避免使用 ON DUPLICATE KEY 子句。

让我们来看一下数据变化:
a表id,name上有一个联合唯一索引
select *  from a
---------------------------------
id name value
10 ff <null>
10 aa dd
执行这个命令
INSERT    a   (id, name) values (10, 'aa')       ON DUPLICATE KEY UPDATE  value='ff', name='ee'
然后查看表的变化
select * from a
------------------------------
id name value
10 ff <null>
10 ee ff
可以看到,第二行由于已经存在id=10, name=aa, 所以更新了这一行,使得name=ee, values=ff    
相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载