(转载)INSERT INTO .. ON DUPLICATE KEY 语法与实例教程
(转载)http://www.111cn.net/database/mysql/ON_DUPLICATE_KEY%20.htm
INSERT语句末尾指定了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;
如果insert多行记录, on duplicate key update后面字段的值怎么指定?要知道一条insert语句中只能有一个on duplicate key update
insert into table (a,b,c) values
(1,2,3),
(2,5,7),
(3,3,6),
(4,8,2),
on duplicate key update b=values(b);
insert into table (a,b,c) values
(1,2,3),
(2,5,7),
(3,3,6),
(4,8,2),
on duplicate key update b=values(b);
insert [low_priority | delayed | high_priority] [ignore] [into] tbl_name [(col_name,...)] values ({expr | default},...),(...),... [ on duplicate key update col_name=expr, ... ]或:
insert [low_priority | delayed | high_priority] [ignore] [into] tbl_name set col_name={expr | default}, ... [ on duplicate key update col_name=expr, ... ]或:
insert [low_priority | high_priority] [ignore] [into] tbl_name [(col_name,...)] select ... [ on duplicate key update col_name=expr, ... ]insert用于向一个已有的表中插入新行。insert...values和insert...set形式的语句根据明确指定的值插入行。insert...select形式的语句插入从其它表中选出的行。在13.2.4.1节,“insert ... select语法”中对insert...select进行了进一步的讨论。
行应被插入到tbl_name表中。可以按以下方法指定列。本语句向这些列提供值。
· 列名称清单或set子句明确的指示了列。
· 如果您不为insert...values或insert...select指定列的清单,则表中每列的值必须在values清单中提供,或由select提供。如果您不知道表中各列的顺序,则使用describe tbl_name查询。
例子:
mysql> select * from student;
+-----+--------+
| age | energy |
+-----+--------+
| 1 | 0 |
| 2 | 0 |
| 3 | 0 |
| 7 | 0 |
| 8 | 0 |
| 9 | 0 |
+-----+--------+
6 rows in set (0.00 sec) mysql> insert into student (age, energy) values(1, 1), (2, 2), (3, 3) on duplica
te key update energy=values(energy);
Query OK, 6 rows affected (0.00 sec)
Records: 3 Duplicates: 3 Warnings: 0 mysql> select * from student;
+-----+--------+
| age | energy |
+-----+--------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 7 | 0 |
| 8 | 0 |
| 9 | 0 |
+-----+--------+
6 rows in set (0.00 sec) mysql>
(转载)INSERT INTO .. ON DUPLICATE KEY 语法与实例教程的更多相关文章
- 【转】MySQL的Replace into 与Insert into on duplicate key update真正的不同之处
原文链接:http://www.jb51.net/article/47090.htm 今天听同事介绍oracle到mysql的数据migration,他用了Insert into ..... on ...
- insert into on duplicate key update
问题 有一个表,建表语句如下: CREATE TABLE `tbl_host` ( `id` bigint(64) NOT NULL AUTO_INCREMENT, `ip` varchar(255) ...
- mysql 中 replace into 与 insert into on duplicate key update 的使用和不同点
replace into和insert into on duplicate key update都是为了解决我们平时的一个问题 就是如果数据库中存在了该条记录,就更新记录中的数据,没有,则添加记录. ...
- SQL语句实现不存在即插入,存在则increase某字段的功能insert into … on duplicate key update
前提条件:必须是唯一主键: CREATE UNIQUE INDEX idx_vote_object ON test_customers_vote (`vote_object`, `vote_objec ...
- MySql中4种批量更新的方法update table2,table1,批量更新用insert into ...on duplicate key update, 慎用replace into.
mysql 批量更新记录 MySql中4种批量更新的方法最近在完成MySql项目集成的情况下,需要增加批量更新的功能,根据网上的资料整理了一下,很好用,都测试过,可以直接使用. mysql 批量更新共 ...
- Replace into 与Insert into on duplicate key update的区别
前提条件:除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用这2条语句没有意义.该语句会与INSERT相同 1. Replace into (1) 添加相同的主键 操作前 ...
- (转载)[MySQL技巧]INSERT INTO… ON DUPLICATE KEY UPDATE
(转载)http://blog.zol.com.cn/2299/article_2298921.html MySQL 自4.1版以后开始支持INSERT … ON DUPLICATE KEY UPDA ...
- INSERT INTO .. ON DUPLICATE KEY更新多行记录
现在问题来了,如果INSERT多行记录, ON DUPLICATE KEY UPDATE后面字段的值怎么指定?要知道一条INSERT语句中只能有一个ON DUPLICATE KEY UPDATE,到底 ...
- insert into ... on duplicate key update 与 replace 区别
on duplicate key update:针对主健与唯一健,当插入值中的主健值与表中的主健值,若相同的主健值,就更新on duplicate key update 后面的指定的字段值,若没有相同 ...
随机推荐
- CSS排版页面
创建CSS文件如下: @charset "utf-8"; /* CSS Document */ *{ margin:0px; padding:0px; border:0px; } ...
- <div>相关
定义 <div>是一个块级元素[会自动换行] 用法 <div>可用于划分独立的一个块状区域,其内部内容显示在<div>的content部分内 结构 [盗用张图] 从 ...
- 学习java随笔第九篇:java异常处理
在java中的异常处理和c#中的异常处理是一样的都是用try-catch语句. 基本语法如下 try { //此处是可能出现异常的代码 } catch(Exception e) { //此处是如果发生 ...
- javascript类继承系列一
js中没有提供类(class,抽象类,接口等高级的抽象),可以用new,但new的function的对象,构造器 但在js中可以通过function来模拟类的一些特性function fun_name ...
- 2013年10月13日学习:SQL通过图形化界面创建表
通过SQL2005创建表的方式有两种: 1.通过图形化用户界面来创建表.比较容易出问题,不稳定,容易点错了.不推荐 2.通过命令来创建.大牛都是这样做的,比较好. 通过图形化界面创建:以创建员工表为例 ...
- 关于iOS元旦http,https的规定,官方论坛回应
先贴原文地址:https://forums.developer.apple.com/thread/48979#146140 原文: eskimoAug 2, 2016 4:17 AM(in respo ...
- 请描述一下 cookies,sessionStorage 和 localStorage 的区别?
http://handyxuefeng.blog.163.com/blog/static/454521722013111714040259/ http://book.51cto.com/art/201 ...
- Visual studio 2015程序转Eclipse gun编译出现的问题总结
Visual studio 2015程序转Eclipse gun编译出现的问题总结 1.C++11支持 1)Project settings project右键-> c/c++ build -& ...
- 简单的背包变形HDU1203,HDU2955
今天一直在写背包,不过中间停了一段时间在写shell. 一直在做01背包.今天做了这两题很相似的背包 首先是HDU1203 Speakless很早就想出国,现在他已经考完了所有需要的考试,准备了所有要 ...
- 【PHP】 foreach循环中变量引用的一道面试题
$a = array('a','b','c'); foreach($a as &$v){} foreach($a as $v){ } var_dump($a); 现在.不要打开浏览器,猜测一下 ...