mysql 添加(insert into)不存在插入,存在不管
程序员文章站
2023-12-29 12:31:22
...
我们在很多需求中,都会有这样一个场景,例如:
我们在加入菜单的时候,总会想出现主键冲突,为了避免这样的情况!我们会在实际的场景中,在主键ID存在的时候不予添加,只有不存在的时候才给予添加。我们通用的方法一般是:
1.(这种方式一般是用在存储过程中)
if not exists (select 1 from ...) then insert ... end if;
2.
insert into user_tab(user_id) select 1 from user_tab ut where ut.user_id != 1;
但是在Mysql中有:
ON DUPLICATE KEY UPDATE
Mysql中文档解释是:
如果您指定了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
简单来说,就是存在就会执行update,不存在就添加,存在就执行修改!那么由此,我们就可以这样做:
insert into menu_tab(menu_id,menu_name) values(1,'主菜单') ON DUPLICATE KEY UPDATE menu_id=menu_id;
另外还有一种方法:
replace into menu_tab(menu_id,menu_name) values(1,'主菜单')
等同:
delete mt from menu_tab mt where mt.menu_id = 1; insert into menu_tab(menu_id,menu_name) values(1,'主菜单');
此方法必须要设置主键!原理就是存在该数据就删除,然后再添加
推荐阅读
-
mysql 添加(insert into)不存在插入,存在不管
-
mysql如果数据不存在,则插入新数据,否则更新的实现方法_MySQL
-
mysql如果数据不存在,则插入新数据,否则更新的实现方法
-
mysql如果数据不存在,则插入新数据,否则更新的实现方法
-
mysql 存在该记录则更新,不存在则插入记录的sql
-
mysql 存在该记录则更新,不存在则插入记录的sql
-
mysql 记录不存在时插入 记录存在则更新的实现方法
-
mysql 记录不存在时插入 记录存在则更新的实现方法
-
转 SQL当记录不存在时插入insert if not exists
-
转 SQL当记录不存在时插入insert if not exists