首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MySQL insert or update sql

MySQL 一条 sql 实现数据保存变更 insert or update ,如果没有执行insert,有就update 需要 有主键 PRIMARY 或 唯一索引 UNIQUE MySQL...中INSERT … ON DUPLICATE KEY UPDATE语句,该语句是基于唯一索引或主键使用 ON DUPLICATE KEY UPDATE后面可以放多个字段,用英文逗号分割。...使用ON DUPLICATE KEY UPDATE,最终如果插入了一个新行,则受影响行数是1,如果修改了已存在一行数据,则受影响行数是2,如果值不变,则受影响行数是0。...INSERT… ON DUPLICATE KEY UPDATE on a table with more than one UNIQUE KEY is unsafe 翻译:使用BINLOG_FORMAT...插入……对于具有多个唯一密钥重复密钥更新是不安全 相关博客:https://blog.csdn.net/rick_zyl/article/details/79024612 mysql 有就更新

2.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

mysql updateinsert常用

https://blog.csdn.net/haluoluo211/article/details/77984451 本文主要内容: update更新,batch批量更新 insert 数据到表中...,将表中数据插入到另一个表中 insert ignore忽略重复数据插入报错问题 ---- update更新,batch批量更新 ---- set sql_safe_updates=0; # 常规update...update springdemo.users set pwd=nickname where id=id; 下面给一个stack overflow中,按照条件批量更新示例: 将id=1字段赋值为...into teacher(name, age) values('jack ma', 32); 工作中,往往我们要把一个表中数据插入到另一张表中: INSERT INTO tb_al_sample...---- 当表中存在唯一索引时,如果插入相同值,mysql会报错,所以我们一般使用: insert ignore into tb_name (title, introduction) VALUES

3.3K30

INSERT ... ON DUPLICATE KEY UPDATE

这种控制可以放在业务层,也可以放在数据库层,大多数数据库都支持这种需求,如Oraclemerge语句,再如本文所讲MySQL中INSERT ......可以在ON DUPLICATE KEY UPDATE后面使用VALUES(字段名)函数来表示即将插入值,如果需要插入或更新多条数据,并且更新字段需要根据其它字段来运算时,可以使用如下语句: INSERT...: INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3;--1+2 INSERT INTO table (a,b...,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATE c=9;--4+5        如果一个表中包含了一个自增字段,使用INSERT ......ON DUPLICATE KEY UPDATE新增或修改t数据后,可以通过last_insert_id()方法返回最后自动生成值,如果是多条,实际测试是返回第一条数据自增值。

1.7K00

INSERT ... ON DUPLICATE KEY UPDATE Statement

ON DUPLICATE KEY UPDATE语句 就像mysql官方文档中提到那样,我们如果将a列设为UNIQUE唯一索引或者主键时,并且当前表已经存在了a=1数据,对于这种情况,下面两条sql结果是相等...t1 SET c=c+1 WHERE a=1; 对于InnoDB引擎表,此处新增可能会触发自增列,但修改操作不会触发 如果上方唯一索引再加一个b列,则上方第一条sql和下方sql结果相等 UPDATE...sql,返回影响行数为1 我们再次执行 可以看到影响行数为2 这说明新增操作返回1,修改操作返回2 但如果我们修改值没有变化,则为0,例如: INSERT INTO t1 (a,b,c) VALUES...,也可以使用 LAST_INSERT_ID()函数获取自增后值 我们还可以在ON DUPLICATE KEY UPDATE后方使用VALUES函数来获取上方INSERT语句中某列值例如 INSERT...执行结果也是相同 INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=3; INSERT INTO t1 (a,b,c)

72530

mysql insert or update与UQ索引

在项目过程中因需要大批量数据insert or update操作,为了减少应用程序校验逻辑,所以使用了mysql 特殊语法insert into … on duplicate key update...用于解决出现相同主键执行update ,不同主键执行新增。...在测试过程中发现一个小坑,在网上技术文档中都写是(当记录中有PrimaryKey或者unique索引的话,如果数据库已经存在数据,则用新数据更新)当时理解错误,理解成会按其中一种进行处理。...所以我遇到了因为UQ相同,PK不同导致触发了数据update导致数据错误。...insert into … on duplicate key update(重复则更新指定字段,不重复则插入) # 主键重复 insert into `insert_or_update` (`id`,

1.7K10

insert...on duplicate key update语法

MySQL不常用一个语法 今天周会上,同事提到了一个业务问题,场景大概是这样,业务方需求是查询一条语句在不在,如果在就给出一个update语句,更新这条记录,如果不在,就给出一个insert...基于这个问题,同事提出了insert...on duplicate key update这个办法,而我第一反应是replace方法,因为我之前从来没用过insert...on duplicate key...,相当对id=1那条记录执行了: update test_1 set age=18 where id=1; 这就是insert...on duplicate key update语法作用,可以分析到...使用这个方法可以替代业务方那种2个SQL写法,也能够解决数据原子性问题。 需要注意是,这个语法不是SQL通用语法,而是MySQL特有的一种语法。...当表中某些字段中包含默认值时候,replace操作插入不完全字段记录,会导致其他字段直接使用默认值,而insert...on duplicate key update操作会保留该条记录原有值。

2.4K40

Mysql中INSERT ... ON DUPLICATE KEY UPDATE

一、前言 在日常业务开发中经常有这样一个场景,首先创建一条记录,然后插入到数据库;如果数据库已经存在同一主键记录,则执行update操作,如果不存在,则执行insert操作; 这个操作可以在业务层做,...数据库层mysql中INSERT ... ON DUPLICATE KEY UPDATE就可以做这个事情,并且是原子性操作 二、INSERT ......ON DUPLICATE KEY UPDATE命令 2.1单条记录下使用 INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE...c=c+1; 如上sql假如t1表主键或者UNIQUE 索引是a,那么当执行上面sql时候,如果数据库里面已经存在a=1记录则更新这条记录c字段值为原来值+1,然后返回值为2。...2.2多记录下使用 INSERT INTO t1 (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(c);

1.7K20

insert ... on duplicate key update 和 replace into

先说结论 insert ... on duplicate key update 和 replace into 执行成功之后返回影响行数,是个比较小主题,我们先说结论,然后再分析这两种 SQL 执行过程中计算影响行数逻辑...update 字段列表 以 t_insert 表为例,i1 字段上有唯一索引,表中记录如下: 示例 SQL 如下: insert into t_insert(i1, i2) values (105,...999) on duplicate key update i2 = 205 示例 SQL 中,update i2 字段值和表中 i1 = 105 记录 i2 字段值一样。...执行过程分析 3.1 insert ... on duplicate key update insert duplicate 语句是 MySQL 对 SQL 标准扩展,它有 2 种行为: 如果插入记录和表中记录不存在主键或唯一索引冲突...条件 3,表上没有定义过删除触发器。 外键约束和删除触发器都很少使用,不展开讲了。 4. 总结 2.

1.5K40
领券