`
shendixiong
  • 浏览: 398559 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

mysql 添加(insert into)不存在插入,存在不管

阅读更多

我们在很多需求中,都会有这样一个场景,例如:

   我们在加入菜单的时候,总会想出现主键冲突,为了避免这样的情况!我们会在实际的场景中,在主键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如何实现 如果存在就update更新,不存在再insert插入.zip

    在MySQL数据库中,如果你需要执行一个操作,即当数据存在时进行更新,如果不存在则进行插入,你可以使用`INSERT INTO...ON DUPLICATE KEY UPDATE`语句。这个功能强大的语句结合了`INSERT`和`UPDATE`操作,允许你在...

    MYSQL SELECT INTO 和 INSERT INTO SELECT

    ### MySQL中的SELECT INTO和INSERT INTO SELECT详解 #### 一、引言 在数据库管理与应用开发过程中,数据的复制是一项非常常见的需求。特别是在进行数据迁移、备份或创建新表时,能够快速有效地复制数据是非常重要...

    解析SQL语句中Replace INTO与INSERT INTO的不同之处

    在SQL语句中,`REPLACE INTO` 和 `INSERT INTO` 都是用来向数据库表中添加数据的命令,但它们之间存在重要的区别。本文将详细阐述这两种操作的区别以及使用场景。 首先,`INSERT INTO` 是最常用的插入数据的方式。...

    MySQL Insert Into 添加数据.docx

    MySQL Insert Into 添加数据 MySQL Insert Into 语句用于向数据表中添加数据记录。Insert Into 语句的基本语法是:INSERT INTO tb_name VALUES (value1, value2,...)。这个语法表示向表中所有的字段按顺序都插入...

    PHP+MySQL之Insert Into数据插入用法分析

    注意,SQL语句对大小写不敏感,所以`INSERT INTO`和`insert into`是等价的。 在PHP中,我们需要使用`mysql_query()`函数来执行SQL插入语句。以下是一个示例,它向名为“Persons”的表中插入两条新记录: ```php $...

    解析MySQL中INSERT INTO SELECT的使用

    MySQL中的`INSERT INTO SELECT`语句是一种非常实用的数据库操作,它允许你从一个或多个数据源中选择数据,并将其插入到另一个表中。这种操作在数据迁移、数据整合或者生成汇总报告时非常常见。下面将详细介绍`INSERT...

    insert into

    "Insert Into"是SQL语言中的一个关键操作,用于向数据库表中插入新的数据记录。这个命令的基本语法结构是`INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);`,其中`table_name`是你要...

    MySQL中REPLACE INTO和INSERT INTO的区别分析

    当你执行一个 `INSERT INTO` 语句时,如果指定的行不存在,那么新行将会被添加到表中。如果新行的某些列没有被指定值,它们将自动接收默认值。例如: ```sql INSERT INTO table_name (column1, column2) VALUES ('...

    MySQL创建存储过程批量插入10万条数据

    MySQL创建存储过程批量插入10万条数据 存储过程 1、首先防止主键冲突,我们清空表。 TRUNCATE table A_student; 2、编写存储过程 delimiter ‘$’; CREATE PROCEDURE batchInsert(in args int) BEGIN declare i int ...

    insert和select结合实现”插入某字段在数据库中的最大值+1″的方法

    INSERT INTO 表一 (column1, column2, column3, column4) select column1, column2, column3, column4 from 表二 问题二 表中插入数据时,某一字段取数据库中该字段的最大值,并+1, 在表中插入数据时,某一字段...

    mysql插入前判断数据是否存在的操作

    可以插入前进行判断要插入的数据是否存在业务代码如下 : INSERT INTO t_topic_vistor(user_id,topic_code) SELECT '218', 'XQ33019920170811142528217' FROM DUAL WHERE NOT EXISTS(SELECT * FROM t_topic_vistor ...

    mssql insert into 和insert into select性能比较

    本文主要探讨了两种不同的插入数据的方法:`INSERT INTO...VALUES` 和 `INSERT INTO...SELECT`,并以MSSQL(Microsoft SQL Server)为例,分析它们在性能上的差异。 首先,`INSERT INTO...VALUES` 语句用于向表中...

    mysql的插入问题 怎么获得自动增长的ID

    ### MySQL的插入问题:如何获取自动增长的ID 在MySQL中,经常需要用到自动增长的ID字段作为表的主键,特别是在频繁进行数据插入操作时。本文将深入探讨以下几个方面: 1. **理解自动增长ID的工作原理** 2. **在...

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

    MySQL中的`REPLACE INTO`和`INSERT INTO ... ON DUPLICATE KEY UPDATE`是两种处理数据冲突的方法,它们在处理已有键值冲突时的行为有所不同。这两种语句都是在插入新记录时,如果发现存在相同的唯一键值,则采取不同...

    MySQL 关于表复制 insert into 语法的详细介绍

    web开发中,我们经常需要将一个表的数据插入到另外一个表,有时还需要指定导入字段,设置只需要导入目标表中不存在的记录,虽然这些都可以在程序中拆分成简单sql来实现,但是用一个sql的话,会节省大量代码。...

    mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点实例分析

    在MySQL中,`REPLACE INTO` 和 `INSERT INTO ON DUPLICATE KEY UPDATE` 是两种处理数据插入时冲突的方法,主要用于处理当试图插入一条记录,而该记录的唯一键或主键已经在表中存在的情况。这两种方法都可以实现如果...

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

    当你在`INSERT`语句后添加`ON DUPLICATE KEY UPDATE`,如果新插入的行违反了唯一性约束,MySQL将执行指定的`UPDATE`操作。这里的“唯一性”指的是任何具有唯一索引或主键的列。例如,如果你有一个名为`consume_locus...

    mysql中insert与select的嵌套使用方法

    在MySQL数据库中,`INSERT` 与 `SELECT` 的嵌套使用是一种强大的功能,它允许我们在一条SQL语句中从一个或多个数据源提取数据并将其插入到目标表中。这种技术尤其适用于需要合并不同表的数据或者创建数据备份的情况...

Global site tag (gtag.js) - Google Analytics