讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

在向表中插入数据的时候,经常遇到这样的情况: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 将自动为这些列赋上默认值。

更多相关文章

  1. 入门 --ubuntu下面mysql数据库安装以及相关操作
  2. 使用python抓取csdn博客访问量并保存在sqlite3数据库中
  3. 世界国家 的数据库sql
  4. 在通过ResultSet反向检索数据时出现NullPointerException
  5. Oracle数据库导入导出程序
  6. 在VS2008中使用MySQL数据库
  7. 将下面语句插入到SQLSERVER数据库中出现“将字符串转换为 unique
  8. MySQL数据库的基本操作
  9. 将Excel表格多个Sheet表的数据转换为SQL存储语句

随机推荐

  1. Android下Speex库除0错误(SIGFPE)排除
  2. and 使用以及添加一个自己的mime type在C
  3. 《H5 App开发》判断当前环境是Android还
  4. Android构建报错:Android resource linkin
  5. android linux 基础知识总结
  6. Android 获取设备信息
  7. android的单元测试摘要
  8. 虚拟键盘弹出时挡住EditText的解决方案
  9. Android01————快速入门
  10. Android(安卓)Studio 在 Mac 上如何真机