mysql 存在该记录则更新,不存在则插入记录的sql
程序员文章站
2023-12-05 15:59:10
复制代码 代码如下:insert table (auto_id, auto_name) values (1, ‘yourname') on duplicate key up...
复制代码 代码如下:
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,则以下两个语句具有相同的效果:
复制代码 代码如下:
mysql> insert into table (a,b,c) values (1,2,3)
-> on duplicate key update c=c+1;
mysql> update table set c=c+1 where a=1;
如果行作为新记录被插入,则受影响行的值为1;如果原有的记录被更新,则受影响行的值为2。
注释:如果列b也是唯一列,则insert与此update语句相当:
复制代码 代码如下:
mysql> 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。
示例:
复制代码 代码如下:
mysql> insert into table (a,b,c) values (1,2,3),(4,5,6)
-> on duplicate key update c=values(a)+values(b);
本语句与以下两个语句作用相同:
复制代码 代码如下:
mysql> insert into table (a,b,c) values (1,2,3)
-> on duplicate key update c=3;
mysql> insert into table (a,b,c) values (4,5,6)
-> on duplicate key update c=9;
当您使用on duplicate key update时,delayed选项被忽略。
推荐阅读
-
mysql 存在该记录则更新,不存在则插入记录的sql
-
mysql 记录不存在时插入 记录存在则更新的实现方法
-
mysql 记录不存在时插入 记录存在则更新的实现方法
-
mysql如果数据不存在,则插入新数据,否则更新的实现方法(实例)
-
MySQL 并行复制从库更新的记录不存在实际却存在
-
【MySQL】1、根据条件排名;2、sql拼接字段;3、插入已存在的记录
-
laravel中的firstOrCreate方法怎么实现记录不存在则新建
-
mysql 存在该记录则更新,不存在则插入记录的sql
-
MySQL 当记要不存在时插入,当记录存在时更新
-
mysql如果数据不存在,则插入新数据,否则更新的实现方法