INSERT 中ON DUPLICATE KEY UPDATE的使用

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

INSERTINTOtable(a,b,c)VALUES(1,2,3)ONDUPLICATEKEYUPDATEc=c+1;

UPDATEtableSETc=c+1WHEREa=1;

您可以在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);

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

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

INSERT INTO table(a,b,c) VALUES (4,5,6) ON DUPLICATE KEY UPDATEc=9;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • AUTO-INC Locks An AUTO-INC lock is a special table-level ...
    FanDB阅读 11,270评论 0 2
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,351评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,954评论 18 399
  • 1. Hive基本介绍和基础: Facebook公司最早完成并开源了hive框架,可以将sql语句直接翻译成Map...
    奉先阅读 8,621评论 0 43
  • 我坐在地铁里摇晃吵杂, 啪!我切断了鼻子 我嗅不到恶心的味道,好像在温暖的摇篮里 啪!我切断了耳朵 我听不见嚼舌的...
    铸言阅读 1,001评论 0 2