Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 冲浪宝典 > 网络资源 > 存在该记录则更新,不存在则插入的sql
【标  题】:存在该记录则更新,不存在则插入的sql
【关键字】:sql
【来  源】:http://www.cublog.cn/u/13433/showart.php?id=82631

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

Your Ad Here
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
 
 
apache+Mysql安全备份模式的实现:【上一篇】
MYSQL安装完后的安全配置:【下一篇】
【相关文章】
  • apache+Mysql安全备份模式的实现
  • MySQL集群配置
  • mysql忘记root密码搞定方法(windows)
  • 浅析字符集以及PHP+Mysql4.1的乱码(转载)
  • 如何加大mysql连接数
  • mysql出错代码及出错信息对照
  • 加强MySQL服务器的安全性
  • mysql php等的编码、转换、客户端、服务器端、连接……
  • 在ASP中也能使用MYSQL数据库
  • MySQL 4.1 字符集支持的原理
  • 【随机文章】
  • 学术论文投稿之怪现状
  • 按数据包配置负载平衡
  • 双线路基本常识(双网技术)
  • "没钱就别接受高等教育?",这来自我们国家的教育部发言人-
  • sun nfs server
  • Cgi入门教程之:1 Unix环境
  • 3DS Max 7 Mental Ray渲染器全攻略(24)
  • Compile gcc for Windows
  • 就会把你当成兄弟
  • Dns配置高级篇
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.