MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDATE语法

例如:

 id name sex age
 1 kathy male 23
 2 Javer famale 32
 3 Mike male 19

方法一:

INSERT INTO kk (id, name,sex)  VALUES(1,'kara','ssss') ON DUPLICATE KEY UPDATE id=1;

方法二:

REPLACE INTO kk(id, name,sex) VALUES (12,'','female'),(13,'Emily','femse');

总结如下:

  1. 如果表中不存在主键记录,replace和insert .... update都与insert是一样的特点。
  2. 如 果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insert .... update的相当于执行if exist do update else do insert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的 值(这样如果是以自增id为标志的话可能导致记录丢失);而insert*update只是更新部分字段,对于未被更新的字段不会变化(不会强制修改为默 认值)。

多条记录操作:
     insert into t(a,b,c) values ('a1','b1','c1'),('a2','b2','c2')
   on duplicate key update t.c=values(t.c)

转载于:https://www.cnblogs.com/share123/p/3636016.html

mysql中在表中insert数据时,有重复主键id时,变成update相关推荐

  1. Mysql插入数据并返回其主键id

    1.背景 将数据插入到数据库中,并返回其主键id 2.思考 在插入的SQL语句里执行查询主键SQL语句 3.解决方案 <insert id="insertAndselectLastIn ...

  2. 获取GridView中RowCommand的当前选中行的索引或主键Id

    获取GridView中RowCommand的当前索引行 前台添加一模版列,里面添加一个LinkButton 前台 (如果在后台代码中用e.CommandArgument取值的话前台代码就必须在按钮中设 ...

  3. Oracle获取insert的值,在Oracle中,如何从AFTER INSERT触发器获取插入的主键值?

    我的Oracle数据库有一个表 DOC_WF_COMM 它的主键是 DWFC_ID SQ_DOC_WF_COMM . 我已经创建了行级别 AFTER INSERT 在该表上和触发器内部,我需要将插入的 ...

  4. MySQL 删除数据后自增长主键id依旧占用问题

    原因是主键是唯一的,绝对不能出现重复. 比如有100条数据,主键为1到100,删除了1到100条的数据之后,还剩0条数据,这个时候再新增数据,id是要从101开始,而不是第1条数据的1. 不过可以手动 ...

  5. mysql insert 主键冲突_insert 时防止出现主键冲突错误的方法

    最近几天,产品上线比较多,从内网测试库导出表的部分内容到线上也就比平时频繁多了,这时候可能会出现主键冲突: Error Code : 1062 Duplicate entry '1' for key ...

  6. mybatis插入数据后返回自增主键ID详解

    1.场景介绍: ​ 开发过程中我们经常性的会用到许多的中间表,用于数据之间的对应和关联.这个时候我们关联最多的就是ID,我们在一张表中插入数据后级联增加到关联表中.我们熟知的mybatis在插入数据后 ...

  7. insert插入语句设置主键id回滚

    insert添加记录时,如果id在数据库表t_ss中设置为自增主键,往往如果最后一条记录是id=47,但是当你把这条数据进行删除,再次添加,则这条记录就会成为id=48的记录,使得数据库中的数据id不 ...

  8. insert操作获取自增主键的值

    映射文件之insert操作获取自增主键的值 mysql中支持自增主键, 原生JDBC中也支持在insert操作中对自增主键的值进行获取 在原生的jdbc中我们利用Statement的getGenera ...

  9. mysql doc插入数据_如何向MySQL数据库的表中录入数据.doc

    如何向MySQL数据库的表中录入数据 当建好了数据库及表时,首先想到的就是向数据库的表中输入数据,这就涉及到如何向数据库录入数据,下面我们就来探讨一下这个问题. 1.常用的方法是使用insert语句( ...

最新文章

  1. H5使用百度地图SDK获取用户当前位置并且标记显示在地图
  2. Java项目开发全程实录pdf
  3. Linux下Tcp保活时间默认多少,C/C++网络编程中的TCP保活
  4. 开源的pop3和smtp组件(支持中文及SSL)
  5. directly test Gateway frontend service in AG3 SICF
  6. Acwing 276. I-区域
  7. JavaFX UI控件教程(九)之Text Field
  8. 激活函数之 Sigmoid、tanh、ReLU、ReLU变形和Maxout
  9. 要让玩家买单的facebook中文网
  10. 学习面向对象思想,开始考虑通过封装、 继承、多态把程序的耦合度降低
  11. java多线程 - 线程通信
  12. while 中 break 与 continue 的区别
  13. 检测出DNF服务器未响应,dnf老是卡死未响应
  14. 菜鸟教程-maven
  15. 翻译Allegorithmic的文档《THE PBR GUIDE - PART 1》
  16. 作物病虫害识别数据集资源合集
  17. Logstash mutate 插件
  18. codeforces 581B Luxurious Houses(线段树点更新,区间查询)
  19. DSS部署-2、环境准备
  20. HR干货,怎样做好企业员工的晋升

热门文章

  1. python控制结构实训_《python 从入门到精通》§5 控制结构
  2. c语言第1章以下说法错误的是,计算机等级考试c语言程序设计习题
  3. 的标题形状工具在哪里_在PPT中如何用好形状排版
  4. net core mysql 连接池_EF Core 小坑:DbContextPool 会引起数据库连接池连接耗尽
  5. cmake开发环境 linux qt_一步步搭建CMake+QT+VTK+BOOST开发环境
  6. 黑龙江科技大学计算机类分数线,2019年黑龙江科技大学优势专业排名及分数线...
  7. change python是什么意思_回溯是什么意思?
  8. nexus 4 linux,Nexus 4刷机Ubuntu Touch教程
  9. 乔安监控云存储_让数据更安全可用,阿里云存储多项新功能发布
  10. (C++)数组作为函数参数