首页 > 数据库 >mysql中使用replace into

mysql中使用replace into

时间:2023-06-20 17:48:46浏览次数:38  
标签:into time update replace mysql now id

replace into是insert into的增强版。在向表中插入数据时,我们经常会遇到这样的情况:1、首先根据主键或者唯一索引判断数据是否存在;2、如果不存在,则插入;3、如果存在,则更新。

MySQL 中如何实现这样的逻辑呢?MySQL 中有更简单的方法: replace into

replace into t(id, update_time) values(1, now());
或
replace into t(id, update_time) select 1, now();

replace into相当于

if not exists (select 1 from t where id = 1) 
insert into t(id, update_time) values(1, now()) 
else 
update t set update_time = now() where id = 1;

 如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。

使用REPLACE INTO,必须拥有表的INSERT和DELETE权限。

在xml文件中使用replace into语句

<insert id="updateOrInsertClientInfo" useGeneratedKeys="true" keyProperty="BM" parameterType="list" >
    replace into bm_kh
    (<include refid="Base_Column_List"/>)
    VALUES
    <foreach collection="list" item="it" separator=",">
    ( #{it.bm},#{it.mc},#{it.jm},
      #{it.sjbm},#{it.kjm},#{it.sh},
      #{it.dzdh},#{it.jwbz},#{it.yhzh},
      #{it.yjdz},#{it.bz},#{it.yskm},
      #{it.dqbm},#{it.dqmc},#{it.dqkm},
      #{it.sfzjy},#{it.wj},#{it.xfsh},
      #{it.xfzfjh}
    )
    </foreach>
  </insert>

 

标签:into,time,update,replace,mysql,now,id
From: https://www.cnblogs.com/zwh0910/p/17494097.html

相关文章

  • 使用docker-compose同时启动MySQL和Redis
    环境查看安装docker和docker-composeapt-yinstalldocker.iodocker-compose设置docker-compose配置文件root@iZ2zebcd9hncu1371fetliZ:/data/docker-compose#pwd/data/docker-composeroot@iZ2zebcd9hncu1371fetliZ:/data/docker-compose#catdocker-compose.ymlvers......
  • 图书馆管理系统代码源码(php+css+js+mysql) 完整的代码源码,系统使用B/S架构。
    图书馆管理系统代码源码(php+css+js+mysql)完整的代码源码,系统使用B/S架构。优化过的界面,拥有管理员和普通用户,普通用户可注册登录,管理员可登录,功能齐全。管理员可管理普通用户,增加其他管理员,增添图书,借还书操作,查看已还书。普通用户,可在线查看现有图书,和自己已借图书。推荐使用php......
  • 选题系统代码源码(php+css+js+mysql) 完整的代码源码,系统使用B/S架构。
    选题系统代码源码(php+css+js+mysql)完整的代码源码,系统使用B/S架构。优化过的界面,拥有管理员、审核员、教师和学生这四种身份登录方式和对应功能,功能齐全。推荐使用phpstudy+navicat搭建和管理项目!服务:提供现成代码,提供环境搭建相关文档。选题系统代码源码是一套完整的代码源码,采......
  • Mysql数据导出---select into outfile
    select...intooutfile语法select*fromstudentsorderbyscorelimit100intooutfile'/database/mysql/tmp/students.csv'FIELDSTERMINATEDBY','OPTIONALLYENCLOSEDBY'"'ESCAPEDBY'\'LINEST......
  • MySQL有哪些锁?
    MySQL有哪些锁?按锁粒度分类,有行级锁、表级锁和页级锁。行级锁是mysql中锁定粒度最细的一种锁。表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突,其加锁粒度最小,但加锁的开销也最大。行级锁的类型主要有三类:RecordLock,记录锁,也就是仅仅把一条记录锁上;Gap......
  • mysql flush table的使用
    会话1:selectsleep(500)fromt_biz1where.....会话2:setsessionwait_time_out=5000;flushtableswithlock; 会话3:select*fromt_biz1where....会话4:select*fromt_biz2where....会话5:unlocktables; 要保证会话1的sleep时间大于会话2 会话1执......
  • [ERROR] Aborting 安装mysql5.7报错
    2023-06-20T03:17:11.632401Z0[ERROR]Fatalerror:Can'topenandlockprivilegetables:Table'mysql.user'doesn'texist2023-06-20T03:17:11.632414Z0[ERROR]Fatalerror:FailedtoinitializeACL/grant/timezonesstructuresorfailed......
  • MySQL单表查询练习(条件_模糊_分组_聚合_排序)
    练习所用数据表•部门表CREATETABLEDEPT(DEPTNOINTPRIMARYKEY,–部门编号DNAMEVARCHAR(14),–部门名称LOCVARCHAR(13)–部门地址);INSERTINTODEPTVALUES(10,‘ACCOUNTING’,‘NEWYORK’);INSERTINTODEPTVALUES(20,‘RESEARCH’,‘DALLAS’);......
  • Mysql - 统计数据
    QA统计数据是做什么的?为了解释器在计算代价时,选择最优的方案.这个值如果与实际值差距过大,会导致执行顺序的变更.统计数据有哪些?对表的统计数据-mysql.innodb_table_stats对表索引的统计数据-mysql.innodb_index_stats统计数据存在哪?有两种方式,一种存在磁盘,一种存在......
  • MySql InnoDB 存储引擎表优化
    一、InnoDB表存储优化1、OPTIMIZETABLE适时的使用OPTIMIZETABLE语句来重组表,压缩浪费的表空间。这是在其它优化技术不可用的情况下最直接的方法。OPTIMIZETABLE语句通过拷贝表数据并重建表索引,使得索引数据更加紧凑,减少空间碎片。语句的执行效果会因表的不同而不同。过大......