当前位置: 首页 > 图文教程 > 数据库 > MYSQL > mysql 记录不存在时插入 记录存在则更新的实现方法

MYSQL
初学者在使用MySQL时必须了解的注意事项
实例剖析:MySQL数据库优化详解
RedHat 9.0下用rpm包安装mysql
MYSQL 数据库同步
Windows XP操作系统下的MYSQL安装过程
Mysql入门系列:MySQL数据目录的位置
Mysql入门系列:MYSQL日志文件维护
Mysql入门系列:优化MYSQL服务器
MySQL数据库磁盘优化
MySQL数据库中应当如何实施info()函数
解析:怎样在MySQL中获得更好的搜索结果
怎样修改 MySQL数据库中的密码
如何正确编写高质量高性能的MySQL语法
细化解析:MySQL 搜索中的大小写敏感性
如何正确的解决 MySQL中忽略用户的现象
详解MySQL数据库中Show命令的用法
轻松掌握 MySQL的数字类型以及建库策略
怎样处理 MySQL中与文件许可有关的问题
教你快速实现 MySQL查询结果的分页显示
解析:MySQL对“服务器端光标”的限制

MYSQL 中的 mysql 记录不存在时插入 记录存在则更新的实现方法


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 76 ::
收藏到网摘: n/a

相信很多人都需要用到这个语句,请看下文:(在4.1以后的版本才有效)
复制代码 代码如下:

mysql> truncate `200702`;
Query OK, 0 rows affected (0.01 sec)
mysql> select * from `200702`;
Empty set (0.01 sec)<span id="more-22"></span>
mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000;
Query OK, 1 row affected (0.00 sec)
mysql> select * from `200702`;
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| 1 | dnspod.com | dnspod | com | 1000 | 2000 | 0 | 0 | 2007-02-04 |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
1 row in set (0.00 sec)
mysql> insert into `200702` (`domain`, `2nd_domain`, `tld`, `query_ns1`, `query_ns2`, `report_date`) values ('dnspod.com', 'dnspod', 'com', 1000, 2000, '2007-02-04') ON DUPLICATE KEY UPDATE `query_ns1` = `query_ns1` + 1000, `query_ns2` = `query_ns2` + 2000;
Query OK, 2 rows affected (0.01 sec)
mysql> select * from `200702`;
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| id | domain | 2nd_domain | tld | query_ns1 | query_ns2 | query_ns3 | query_ns4 | report_date |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
| 1 | dnspod.com | dnspod | com | 2000 | 4000 | 0 | 0 | 2007-02-04 |
+----+------------+------------+------+-----------+-----------+-----------+-----------+-------------+
1 row in set (0.01 sec)
mysql>
当然,建表的时候,千万别忘记了给domain做一个unique
UNIQUE KEY `domain` (`domain`,`report_date`)