讨人喜欢的MySQL replace into用法(insert into 的增强版)_MySQL
在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。
在 SQL Server 中可以这样处理:
if not exists (select 1 from t where id = 1)
insert into t(id, update_time) values(1, getdate())
else
update t set update_time = getdate() where id = 1
那么 MySQL 中如何实现这样的逻辑呢?别着急!MySQL 中有更简单的方法: replace into
replace into t(id, update_time) values(1, now());
或
replace into t(id, update_time) select 1, now();
replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。
要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。
MySQL replace into 有三种形式:
1. replace into tbl_name(col_name, ...) values(...)
2. replace into tbl_name(col_name, ...) select ...
3. replace into tbl_name set col_name=value, ...
前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。
bitsCN.com上一篇: Oracle 行级锁与表级锁
下一篇: MySQL记录非事务性语句-疑问
推荐阅读
-
讨人喜欢的MySQL replace into用法(insert into 的增强版)_MySQL
-
insert-通过Php程序 像数据库插入内容时。在页面提交之后,mysql会有两个相同的数据 只有id不同
-
REPLACE INTO 与 INSERT INTO 的区别_MySQL
-
mysql的insert与update效率提高上万倍的经历
-
mySQL中replace的用法_MySQL
-
mysql中order by 语句的用法 索引优化
-
mysql_list_dbs函数的用法实例汇总
-
mysql 时间转换函数的用法
-
mysql中使用replace替换某字段的部分内容_MySQL
-
php中mysql_real_escape_string()函数的用法介绍