首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ON DUPLICATE KEY UPDATE

问题引出 案例:某个餐桌(id)花了多少钱(num) 如果4号餐桌点了一份西红柿4元,我们可以插入;如果3号餐桌点了一份西红柿4元,我们可以修改 你选择insert或者update的原因是你知道他原来有没有数据...,性能问题 解决方法 有则改之无则加勉,数据库中同样也有相似的问题,有就修改,没有就插入 ON DUPLICATE KEY UPDATE 就是解决,如果有数据就修改,如果没有数据就插入的问题 第一次执行...(数据库中没有id 为4的数据) INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY UPDATE id = 4 ,num = 4+num;...Query OK, 1 row affected 第二次执行(数据库中有id为4的数据) INSERT INTO hello (id,num) VALUES (4,4) ON DUPLICATE KEY...UPDATE id = 4 ,num = 4+num; Query OK, 2 rows affected

10210
您找到你想要的搜索结果了吗?
是的
没有找到

ON DUPLICATE KEY UPDATE Statement

ON DUPLICATE KEY UPDATE语句 就像mysql官方文档中提到的那样,我们如果将a设为UNIQUE唯一索引或者主键时,并且当前表已经存在了a=1的数据,对于这种情况,下面两条sql的结果是相等的...当然如果不满足上方条件,则会新增一条数据 INSERT INTO t1 (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE...()函数获取自增后的值 我们还可以在ON DUPLICATE KEY UPDATE后方使用VALUES函数来获取上方INSERT语句中某的值例如 INSERT INTO t1 (a,b,c) VALUES...DUPLICATE KEY UPDATE c=9; 从 MySQL 8.0.20开始,不推荐使用 VALUES ()来引用新的行和,并且在将来的 MySQL 版本中可能会删除。...(m,n,p) ON DUPLICATE KEY UPDATE c = m+n; 就先写这么多吧

72730

insert...on duplicate key update语法

基于这个问题,同事提出了insert...on duplicate key update这个办法,而我的第一反应是replace方法,因为我之前从来没用过insert...on duplicate key...: 1、首先创建一个包含id,name,age的表,其中id是主键; 2、在这个表中插入一条id=1的记录; 3、使用insert...on duplicate key update语法插入一条id=...test_1 set age=18 where id=1; 这就是insert...on duplicate key update语法的作用,可以分析到,当发生主键冲突的时候,可以直接进行update...操作,这个update操作里面可以更新任意想要更新的;而没有主键冲突的时候,相当于对这个表进行了一次插入操作。...还有一点需要注意,当表中存在两个都冲突的情况下(例如age也是一个unique索引,id和age同时冲突的情况),只会更新其中的一条记录,而且,当出现多个unique索引的时候,对于SQL语法where

2.4K40

mysql insert duplicate key update 死锁分析

背景 数据入库这块有离线和实时两套入库系统,写同一个db的同一批mysql表,两边用的都是insert into table on duplicate key update这种方式。...原因分析&解决方案 这里面分两种情况,一种是带主键的insert duplicate key update,一种是没有主键带唯一索引的insert duplicate key update。...1、带主键的insert duplicate key update 实时入库的batch大小是1w,离线入库的batch大小也是1w,为了提高入库效率 ,两边都开启了事务。...事务2: insert into test2(code,other)values(5,5) on duplicate key update other=values(other); 由于code为5...如果插入数据时带上主键,那么就不会产生next-key锁,会退化到第一种情况(带主键的insert duplicate key update)。

3.8K10

Mysql on duplicate key update用法及优缺点

ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql 在MySQL数据库中,如果在insert语句后面带上ON DUPLICATE KEY UPDATE 子句,而要插入的行与表中现有记录的惟一索引或主键中产生重复值...KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1; ON DUPLICATE KEY UPDATE后面可以放多个字段,用英文逗号分割。...再现一个例子: INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+...,那么也不会更新成功而导致报错,只有当该条语句没有任何一个unique key重复才会插入新记录);尽量不对存在多个唯一键的table使用该语句,避免可能导致数据错乱。...mysql,然后mysql执行完duplicate后的update操作,然后对该记录加上X(排他锁),最后进行update写入。

2.2K30
领券