做项目是遇到这样一个问题,把查询出的数据插入到一个新表里面,第一次可以直接插入,但是第二次第三次的时候如果直接更新,但是会有些新的数据需要添加,但是如果先删除再插入的话效率不高,如果对比两端的数据,相同的更新,没有的插入,这杨效率也不高,就是有些数据是更新,有些数据是新增,在网上找了找,mysql有一个replace into可以实现,有新数据就自己新增,旧数据就直接更新,其实就是先删除数据,再新增

新建一个test表,三个字段,id,title,uid,  id是自增的主键,uid是唯一索引;

插入两条数据

insert into test(title,uid) VALUES ('123465','1001');insert into test(title,uid) VALUES ('123465','1002');

执行单条插入数据可以看到,执行结果如下:[SQL]insert into test(title,uid) VALUES ('123465','1001');

受影响的行:1时间:0.175s

使用 replace into插入数据时:

REPLACE INTO test(title,uid) VALUES ('1234657','1003');

执行结果:[SQL]REPLACE INTO test(title,uid) VALUES ('1234657','1003');

受影响的行:1时间:0.035s

当前数据库test表所有数据如下:

当uid存在时,使用replace into 语句

REPLACE INTO test(title,uid) VALUES ('1234657','1001');[SQL]REPLACE INTO test(title,uid) VALUES ('1234657','1001');

受影响的行:2时间:0.140s

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, ...

第一种形式类似于insert into的用法,

第二种replace select的用法也类似于insert select,这种用法并不一定要求列名匹配,事实上,MYSQL甚至不关心select返回的列名,它需要的是列的位置。例如,replace into tb1( name, title, mood) select rname, rtitle, rmood from tb2;?这个例子使用replace into从?tb2中将所有数据导入tb1中。

第三种replace set用法类似于update set用法,使用一个例如“SET col_name = col_name + 1”的赋值,则对位于右侧的列名称的引用会被作为DEFAULT(col_name)处理。因此,该赋值相当于SET col_name = DEFAULT(col_name) + 1。

前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。

mysql中replace into效率_MYSQL中replace into的用法相关推荐

  1. mysql replace报错_Mysql中replace与replace into的用法讲解

    Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...

  2. MySQL中replace主键_Mysql中replace与replace into的用法讲解

    Mysql replace与replace into都是经常会用到的功能:replace其实是做了一次update操作,而不是先delete再insert:而replace into其实与insert ...

  3. mysql去除select换行符_MySQL中去除字段中的回车符和换行符

    问题: 在使用[ load data infile 'D:/node.txt' into table node fields terminated by '\t'; ]语句批量导入如下图所示的aaa. ...

  4. mysql 语句怎样修饰约束_MySQL中的约束,添加约束,删除约束,以及一些其他修饰讲解...

    (1)创建数据库 CREATE DATABASES 数据库名; (2)选择数据库 USE 数据库名; (3)删除数据库 DROP DATAVBASE 数据库名; (4)创建表 CREATE TABLE ...

  5. mysql 固定符号分列显示_MySql中指定符号分割并分行展示

    1.涉及到的函数三个: 1.1 REPLACE('value','str1','str2') 用法规则:使用str2替换掉value中的所有的str1; SELECT REPLACE('我来了','来 ...

  6. mysql的explain怎么看_mysql中explain用法详解

    如果在select语句前放上关键词explain,mysql将解释它如何处理select,提供有关表如何联接和联接的次序. explain的每个输出行提供一个表的相关信息,并且每个行包括下面的列: 1 ...

  7. mysql临时关闭索引功能_MYSQL中常用的强制性操作(例如强制索引)

    mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的 ...

  8. mysql中的强制索引_MYSQL中常用的强制性操作(例如强制索引)

    mysql常用的hint 对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法.同样,在mysql里,也有类似的hint功能.下面介绍一些常用的 ...

  9. mysql b tree索引原理_MySQL中B+Tree索引原理

    B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引.B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的.在讲B ...

最新文章

  1. redux中reducer使用require.context使用技巧
  2. C#与西门子PLC通讯
  3. Quarkus on OpenJ9 JVM和资源消耗
  4. 递归、os.walk、内置函数、lambda、hashlib模块、md5加密、python安装第三方模块、操作mysql数据库...
  5. 整合SSH 遇到错误之一
  6. Matlab 2016a 安装及破解方法
  7. 如何在powerpoint中设置倒计时
  8. Vue使用iconfont(阿里图标库)
  9. C++ Opencv安装学习笔记
  10. Python贴吧灌水脚本
  11. 机器学习笔记 - 时间序列的季节性
  12. scrapy_redis种子优化
  13. 通过js实现单击显示隐藏图片
  14. 邵阳学院计算机系主任,湖南教育大平台-湖南省计算机教育年会在邵阳学院召开...
  15. 使用gensim框架及Word2Vec词向量模型获取相似词
  16. 【原创】VBA学习笔记(300)VBA 很多工作表函数都只对1维数组有用,用2维数组上经常报错!
  17. 煤炭企业内部调拨物资称重问题如何管理(一)
  18. C#面向对象Chatbot智能版
  19. 无觅科技推荐: TikTok直播专线怎么选?说说TikTok直播加速的4种方案
  20. Linux 探索之旅 | 第一部分第四课:磁盘分区 + 完成 Ubuntu 安装

热门文章

  1. mysql+'@'%_mysql全局权限账户%登录不上ERROR 1045 (28000): Access denied for user 'zzq'@'localhost' (usi......
  2. android 9.0 后台录音,不限制1分钟
  3. python帮助和文档、希腊字母对照表
  4. 产品三维动画成为新一代营销手段
  5. CSS动画效果的回调
  6. Hessian的使用以及理解
  7. 华为matepadpro打开html文件,华为matepadpro打开了平板界的天花板
  8. JQuery判断邮箱格式问题
  9. 【PAT乙级】题解-1031 查验身份证
  10. cocos2d-x 3.2 |飞机大战:技能