MySQL: insert 语句的 on duplicate key update

mysql特殊语法insert into .. on duplicate key update ..使用详解 阅读详情

MySQL: insert 语句的on duplicate key update

在mysql中,insert语句有这样的用法insert into <table_name> values (v1, v2, v3) on duplicate key update ...

这样的含义是:如果主键重复,或者unique key重复,则执行update语句;否则执行insert语句。

eg.

比如,有一个表people:

create table people(
    id int not null auto_increment,
    name varchar(100) not null,
    age int,
    primary key(id)
);

已经有数据:

mysql> select * from people;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  3 | John   |   30 |
|  4 | \James |   33 |
+----+--------+------+
2 rows in set (0.00 sec)

然后,再执行insert into people (id, name, age) values (3, 'Jack', 21) on duplicate key update name = 'Jack', age = 21;语句的时候,因为已经存在主键3了,所以不执行insert语句,而执行update语句:

mysql> insert into people (id, name, age) values (3, 'Jack', 21) on duplicate key update name = 'Jack', age = 21;
Query OK, 2 rows affected (0.02 sec)

mysql> select * from people;
+----+--------+------+
| id | name   | age  |
+----+--------+------+
|  3 | Jack   |   21 |
|  4 | \James |   33 |
+----+--------+------+
2 rows in set (0.00 sec)

MySQL 系列:

1. MySQL 常用 SQL 命令(1. DDL语句)

2. MySQL 常用 SQL 命令(2. DML语句)

3. MySQL 常用函数

4. MySQL 浮点数精度

更多文章

Eplan设计师必会—伺服安全回路的设计方法 本文介绍了在EPLAN中设计伺服STO安全回路的方法。首先需查阅伺服驱动器说明书确定STO接线端子,重点关注双通道配置。设计步骤包括:使用黑盒子功能绘制驱动器外形,正确标注STO接线点,并连接安全继电器或PLC的安全输出。关键注意事项有:必须采用双通道独立布线,确保同步动作,遵循故障安全原则,使用常闭触点串联回路。文中以西门子V90和汇川伺服为例说明具体接线要求,并附有项目实例参考。 阅读详情

相关推荐

层层剥开Allegro skill--快速抓取并写入Allegro软件【呕血创作,转载注明】

Allegro skill eda pcb

qq_36492361的博客 1252

MySQL的insert-on-duplicate语句详解

MySQL的insert-on-duplicate语句详解

Charge8的博客 8950

【open judge】【程设】魔兽世界三开战!

#程设 魔兽世界三---开战!--------原以为会很容易ac,没想到写了好久,看来自己的水平还是亟待提高啊!有几个比较有趣的点:1. typeid(#include&lt;typeinfo&gt;)还是比较好用的,特别是本题当战士为wolf,iceman, dragon, ninja时有特殊技能,那么用typeid判断一下就很方便了。2. 对于这种输出很复杂的问题,往往通过使用文件的输入输出再...

weixin_40841416的博客 6073

mysql中INSERT INTO ... ON DUPLICATE KEY UPDATE的用法,以及与REPLACE INTO 语句用法的异同

mysql中INSERT INTO ... ON DUPLICATE KEY UPDATE的用法,以及与REPLACE INTO 语句用法的异同

jkzyx123的博客 3181

Gemma 4 12B QAT+MTP小显存部署实战指南

大语言模型本地部署的核心瓶颈在于显存与推理效率的平衡。量化感知训练(QAT)通过在训练阶段模拟低精度计算,显著提升模型对INT4量化的鲁棒性;多令牌预测(MTP)则通过并行解码优化KV Cache复用,降低GPU kernel调用频次。二者协同可在8GB显存设备上稳定运行12B级模型,兼顾精度、速度与上下文长度。该方案适用于开发者本地AI助手、技术文档生成、SQL翻译等轻量但高交互需求场景,是当前Windows环境中小显存高效落地Gemma系列模型的工程最优解。

weixin_30934229的博客 377

记录:rk3568适配开源GPU驱动(panfrost)

摘要:本文介绍了在RK3568芯片上移植Mali-G52 GPU驱动的过程。主要包括内核dts文件修改和内核配置调整两部分。

xuesong10210的博客 2237

MySQL插入数据时如何处理重复键?INSERT INTO...ON DUPLICATE KEY UPDATE来帮你

MySQL 的INSERT INTO... ON DUPLICATE KEY UPDATE是一种方便的语法,用于在插入新记录时处理重复键的情况。当我们尝试向表中插入新记录时,如果唯一键或主键已存在,该语法允许我们更新现有记录而不是引发错误。下面是INSERT INTO... ON DUPLICATE KEY UPDATE语法的一般形式:INSERT INTO table_name (col...

fastboot 1989

STM32G0实战:HAL库与LL库Flash操作避坑指南(附HardFault解决方案)

本文深入剖析了STM32G0系列微控制器在Flash操作中常见的HardFault问题,对比了HAL库与LL库在读写擦除操作上的底层差异与潜在陷阱。文章提供了基于寄存器状态分析的精准调试方法,并给出了经过实战检验的解决方案与健壮的代码框架,帮助开发者有效规避数据丢失与系统崩溃风险。

t8u9v0w1x的博客 730

MySQL 的 Replace into 与 Insert into on duplicate key update 真正的不同之处

但是实际上,根据我推测,如果是简单的update语句,auto_increment不会+1,应该也是先delete,再insert的操作,只是在insert的过程中保留除update后面字段以外的所有字段的值。有key的时候,replace是delete老记录,而录入新的记录,所以原有的所有记录会被清除,这个时候,如果replace语句的字段不全的话,有些原有的比如例子中c字段的值会被自动填充为默认值。- 意向共享锁(IS): 在一个事务获取表t的某行的S锁之前, 他必须获取表t的一个IS锁或更强的锁。

Bingo 2366

代码的自由之旅:用AI写出无版权烦恼的Verilog

他们还基于这个数据集,训练了一个名叫“FreeV”的AI模型,不仅能写出好用的Verilog代码,还把版权侵权的风险降到了仅3%。为了让AI安全地写Verilog,研究团队提出了三个“法宝”:一个检测AI是否会生成侵权代码的测试方法、一个干净的Verilog数据集FreeSet,还有一个基于FreeSet训练的AI模型FreeV。AI的记忆力超强,能记住训练时见过的代码。测试发现,一些用Verilog数据训练过的AI,比如VeriGen,生成侵权代码的概率从9%涨到了15%,说明它们可能学了不该学的代码。

步子哥的博客 1810

在MATLAB中将C语言代码转化为可执行的mexw64文件

这样,您可以将高效的C语言算法集成到MATLAB环境中,以便更好地利用MATLAB的功能和特性。请记住,在使用mex转换C语言代码之前,您需要正确编写和测试C语言代码,并确保它与MATLAB的mex接口兼容。MATLAB是一种功能强大的数值计算软件,它提供了一个机制,可以将C语言代码转化为MATLAB可执行的mexw64文件。在上述命令中,"-output"选项指定生成的mex文件的名称,"myfunction"是您选择的名称,"myfunction.c"是要编译的C语言源文件。步骤1:编写C语言代码。

CodeRoarX的博客 1427

MySQL INSERT ... ON DUPLICATE KEY UPDATE语句

网上关于INSERT … ON DUPLICATE KEY UPDATE大多数文章都是同一篇文章转来转去,首先这个语法的目的是为了解决重复性,当数据库中存在某个记录时,执行这条语句会更新它,而不存在这条记录时,会插入它。 相当于 先判断一条记录是否存在,存在则update,否则insert。其语法是: INSERT INTO tablename(field1,field2, field3, ......

xupeng1644的博客 1552

基于MATLAB开发AUTOSAR软件应用层模块-part2.建立一个AUTOSAR的模型,并生成autosar格式代码

上一篇我们建立了一个空模型,这篇我们接着上篇文章,建立一个简单的模型 点击 Library Browser,打开simulink模块库,见下图 左侧是模块库的列表,右侧是每个模块库里包含的具体的模块。 点击通用模块库,里边是一些常见的模块, 我们选取里边的3个模块,分别是输入,输出和增益三个模块,右键点击模块,选择add block to model xx,可以把模块添加到模型中。 然后练好连线 一个简单的模型就搭建好了,之后我们修改配置,将模型修改为AUT...

汽车软件开发 3302

MySQL 插入更新语句(insert…on duplicate key update语句 )

我们日常在使用 insert into 语句向表中插入数据时,一定遇到过主键或唯一索引冲突的情况,当遇到这种情况时,MySQL默认的反应是报错并停止执行后续的语句,为了避免这种情况,你有3种选择。

最简单的方法,解决最实际的问题。 1516

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

mysql INSERT ... ON DUPLICATE KEY UPDATE语句

网上关于INSERT ... ON DUPLICATE KEY UPDATE大多数文章都是同一篇文章转来转去,首先这个语法的目的是为了解决重复性,当数据库中存在某个记录时,执行这条语句会更新它,而不存在这条记录时,会插入它。 相当于 先判断一条记录是否存在,存在则update,否则insert。其语法是: INSERT INTO tablename(field1,field2, field3, ....

奔跑的豆子的专栏 970

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

mysql插入更新语句INSERT ... ON DUPLICATE KEY UPDATE死锁问题

在开发中,可能会碰到这样的场景,往数据库中插入一条记录,如果记录存在的话则更新原纪录。在mysql中,mysql5.0支持了这样的需求,INSERT ... ON DUPLICATE KEY UPDATE语句就是用来处理这样的需求。当插入一条记录时会判断是否存在相同主键的记录。 但这个语句本身存在一些缺陷: 首先他是根据主键进行判断插入更新的,当mysql执行INSERT ON DUPLIC...

leaves_story的博客 3718

深度解析MySQL INSERT ... ON DUPLICATE KEY UPDATE语句

MySQL的语句是一个强大且高效的工具,特别适合需要"存在则更新,不存在则插入"的场景。如示例所示,它能简洁地处理表间数据同步,同时确保数据一致性。理解其工作原理和适用场景,可以帮助开发者编写更高效、更可靠的数据库操作代码。在实际应用中,应当根据具体业务需求、数据量和并发情况,合理选择和使用这一特性,必要时结合事务和其他SQL特性,构建完整的数据处理解决方案。

hi星尘的博客 1366

mysql中的insert ON DUPLICATE KEY UPDATE,replace语句

之前没有关注过的一个点,在insert ON DUPLICATE KEY UPDATE执行后,表上的自增主键值维护是加了1的,主键一样,执行的就是update,不是删除在插入 mysql> select * from bai; +------+------+------+----+ | a | b | c | id | +------+------+------+----+...

敖尔其楞的专栏 568

mysql中upset语句,将UPDATE转换为INSERT INTO ON DUPLICATE KEY UPDATE语句

I have this UPDATE MySQL statement which works fine.UPDATE table1Inner Join table2ON table2.id = table1.gw_idSET table1.field1=1, table1.field2=2WHERE table1.nick_no=4 AND table2.addr=123I would like ...

weixin_29210727的博客 683

mysql insert on duplicate_mysql INSERT ... ON DUPLICATE KEY UPDATE语句

网上关于INSERT ...ON DUPLICATE KEY UPDATE大多数文章都是同一篇文章转来转去,首先这个语法的目的是为了解决重复性,当数据库中存在某个记录时,执行这条语句会更新它,而不存在这条记录时,会插入它。相当于 先判断一条记录是否存在,存在则update,否则insert。其语法是:INSERT INTO tablename(field1,field2, field3, ......

weixin_34872032的博客 563

mysql批量更新,批量插入之replace语句/insert into... on duplicate key update语句

先说结论: 1:如果业务逻辑强依赖自增ID,建议不要用REPLACE 2:replace语句当存在主键冲突的时候是先DELETE再INSERT,无冲突直接进行insert 3:当存在唯一索引冲突的时候是直接UPDATE,UPDATE操作不会涉及到AUTO_INCREMENT的修改 4:很大程度上会导致主备中断,存在容灾风险 使用语法: 1:如果给定行数据不存在,那么MySQL REPLACE语句会插入一个新行(是否存在以UNIQUE索引或PRIMARY KEY为准),不存在则删除旧行,插入新行

qq_41633199的博客 4494

mysql中upset语句_将UPDATE转换为INSERT INTO ON DUPLICATE KEY UPDATE语句

I have this UPDATE MySQL statement which works fine.UPDATE table1Inner Join table2ON table2.id = table1.gw_idSET table1.field1=1, table1.field2=2WHERE table1.nick_no=4 AND table2.addr=123I would like ...

weixin_33916124的博客 627

mysql 中 INSERT ... ON DUPLICATE KEY UPDATE语句

mysql 中 INSERT … ON DUPLICATE KEY UPDATE语句的作用 该语句的作用主要是为了解决将记录插入表的时候,避免出现重复的记录。当记录在数据库中存在 时,执行该语句会更新记录,当不存在这条记录时,就会插入记录。 相当于 先判断一条记录是否存在,存在则update,否则insert。其语法是: INSERT INTO tablename(field1,field2, f...

tan1123y的博客 560

MySQL语句:insert into …… on duplicate key update ……

INSERT INTO…ON DUPLICATE KEY UPDATE 解释: 如果记录不存在就进行插入,否则进行修改        如果insert的数据会引起唯一索引(包括主键索引)的冲突,即这个唯一值重复了(已经存在),则不会执行insert操作,而执行后面的update操作。 好处: 原本需要三条操作数据库的语句,现在一句实现; 案例: 建立test表,a为主键(唯一不能重复): create table test( a

老程的博客 1334

mysql数据库Insert语句后面加ON DUPLICATE KEY UPDATE,保证唯一性

如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。   例如:     建表语句: CREATE TABLE `consume_locus` ( `rds` varchar(255) NOT NU

nature_fly088的专栏 1万+
上一篇: MySql insert 语句中的反斜杠
下一篇: Java - List 的 contains 方法的性能
杨小熊的笔记
博客等级 码龄15年 125粉丝 156原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值