一条mysql教程 存在该记录则更新,不存在则插入记录的sql

INSERT table (auto_id, auto_name) values (1, ‘yourname') ON DUPLICATE KEY UPDATE auto_name='yourname'

ON DUPLICATE KEY UPDATE 的使用

如果您指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则执行旧行UPDATE。例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果:

复制代码 代码如下:

INSERT INTO table (a,b,c) VALUES (1,2,3)ON DUPLICATE KEY UPDATE c=c+1;UPDATE table SET c=c+1 WHERE a=1;

如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。

注释:如果列b也是唯一列,则INSERT与此UPDATE语句相当:

复制代码 代码如下:

UPDATE table SET c=c+1 WHERE a=1 OR b=2 LIMIT 1;

如果a=1 OR b=2与多个行向匹配,则只有一个行被更新。通常,您应该尽量避免对带有多个唯一关键字的表使用ON DUPLICATE KEY子句。

您 可以在UPDATE子句中使用VALUES(col_name)函数从INSERT...UPDATE语句的INSERT部分引用列值。换句话说,如果没 有发生重复关键字冲突,则UPDATE子句中的VALUES(col_name)可以引用被插入的col_name的值。本函数特别适用于多行插入。 VALUES()函数只在INSERT...UPDATE语句中有意义,其它时候会返回NULL。

示例:

复制代码 代码如下:

INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6)ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b);

本语句与以下两个语句作用相同:

复制代码 代码如下:

1 INSERT INTO table (a,b,c) VALUES (1,2,3)2 ON DUPLICATE KEY UPDATE c=3;3 INSERT INTO table (a,b,c) VALUES (4,5,6)4 ON DUPLICATE KEY UPDATE c=9;

当您使用ON DUPLICATE KEY UPDATE时,DELAYED选项被忽略。

------------------------------------------------------------------------------------------------------------------------

MySQL has a special construct for this. Assume the 'username' column below is UNIQUE:

INSERT INTO users (username, email) VALUES ('Jo', 'jo@email.com')

ON DUPLICATE KEY UPDATE email = 'jo@email.com'

The 'ON DUPLICATE KEY' statement only works on PRIMARY KEY and UNIQUE columns.

mysql 存在也插入_Mysql 不存在则插入,存在则更新相关推荐

  1. mysql insert 自增_MySQL自增列插入0值的解决方案

    在将数据库从MSSQL迁移到MySQL的过程中,基于业务逻辑的要求,需要在MySQL的自增列插入0值.在MSSQL中是这样完成的: string sql;sql = " set identi ...

  2. mysql排插问题_MySQL一次数据插入故障记录

    某天突然收到报警,数据库大量事务等待,进到数据库后发线大量的插入操作被阻塞,且都是同一个表的. 通过 show engine innodb status 发现插入操作都是在等待索引 idx_creat ...

  3. mysql数据自定义随机_MySQL 利用事务自定义插入随机数据

    -- -----------------声明全局变量--------------- declare str varchar(100) default '2010'; declare n int def ...

  4. mysql auto increment 插入_MySQL里AUTO_INCREMENT表里插入0值的问题

    在使用MYSQL数据库时,无法设置AUTO_INCREMENT从0开始自增,之后查询了相关资料整理. 快速概览 AUTO_INCREMENT列满足条件 在不同数据库引擎下所具有的特征 解决AUTO_I ...

  5. mysql 循环体 如何测试_mysql里如何循环插入数据,进行测试

    比如从现在开始一直循环到后年,比如设 置8根管线,一直循环下去进行数据叠加,下面是C#代码,不知道怎么写下去了 private void button1_Click(object sender, Ev ...

  6. MYSQL数据库字段关联_MySQL数据库 字段操作 多表关系(更新中...)

    外键 (foreign key) ## 外键 ```mysql # 作者(author):id,name,sex,age,mobile, detail_id # 作者详情(author_detail) ...

  7. mysql中sql批量插入_MySQL批量SQL插入性能优化

    对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长. 特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久.因此,优化数据库插入性能是很有意义的 ...

  8. mysql 优化配置 大批量数据插入_MYSQL开发性能研究——批量插入的优化措施

    一.我们遇到了什么问题 在标准SQL里面,我们通常会写下如下的SQL insert语句. INSERT INTO TBL_TEST (id) VALUES(1); 很显然,在MYSQL中,这样的方式也 ...

  9. mysql数据库语句插入_MySQL之插入数据(添加数据)-INSERT

    基本语法: INSERT 语句有两种语法形式,分别是 INSERT-VALUES 语句和 INSERT-SET 语句. 1.INSERT...VLAUES语句 INSERT VLAUES的语法格式如下 ...

最新文章

  1. 【IDAX投研中心】BCH果然最强
  2. CentOS5.9下用Kate
  3. 旗正规则引擎内存表出错的原因及解决方法
  4. 解决The total number of locks exceeds the lock table size错误
  5. 安卓系统内 的 安卓虚拟机
  6. 王爽 汇编语言第三版 第9章 转移指令的原理
  7. 磁盘文件的正常读写与异步读写
  8. Spring Data JPA教程,第一部分: Configuration(翻译)
  9. 什么是灰度发布?灰度发布方式 系统的割接 灰度部署典型的框架架构
  10. C#操作XML的完整例子——XmlDocument篇
  11. [转]ffmpeg库音频解码示例
  12. 对飞行前请求的响应未通过访问控制检查:它没有http ok状态。_HTTP 缓存
  13. 图像处理_OpenCV图像增强算法实现(直方图均衡化、拉普拉斯、Log、Gamma)
  14. AI数学基础(1)--- 马尔可夫不等式
  15. 【牛客网】马三来刷题之最大差值
  16. 远程计算机仿真终端,仿真终端的使用返回主页关闭.doc
  17. 猫哥教你写爬虫 042--session的用法
  18. POJ 1664 求m个苹果放入n个盘子的不同放法数目 递归 分类讨论
  19. 安装google扩展
  20. WIFI驱动开发——WIFI支持WPA3连接

热门文章

  1. python123测验4程序题_Python面试题245道(从基础到高级)123~141——网络编程,Web—Flask...
  2. 二分匹配和一般图匹配
  3. Java 工具类 - MD5Util
  4. Django登录验证——原生表单验证
  5. linux安装thrift
  6. Wix 安装部署(五) Bootstrapper 捆绑安装
  7. [译] 如何用ps制作泼水字
  8. 电脑安装系统出错蓝屏报错为 STOP 0xc0000020 ,什么原因?
  9. 计算机组成原理之指令和寻址方式
  10. MySQL step by step 安装实战