`
shendixiong
  • 浏览: 393499 次
  • 性别: 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,'主菜单');

 此方法必须要设置主键!原理就是存在该数据就删除,然后再添加

 

 

分享到:
评论

相关推荐

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

    本文实例讲述了PHP+MySQL之Insert Into数据插入用法。分享给大家供大家参考。具体如下: INSERT INTO 语句用于向数据库表中插入新纪录。 向数据库表插入数据 INSERT INTO 语句用于向数据库表添加新纪录。 语法: ...

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

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

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

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

    解析MySQL中INSERT INTO SELECT的使用

    对于这种情况,可以使用如下的语句来实现:INSERT INTO db1_name (field1,field2) SELECT field1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要查询...

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

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

    php mysql insert into 结合详解及实例代码

    INSERT INTO 语句用于向数据库表添加新记录。 语法 INSERT INTO table_name VALUES (value1, value2,....) 您还可以规定希望在其中插入数据的列: INSERT INTO table_name (column1, column2,...) VALUES (value1,...

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

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

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

    本文讲述了mysql中insert与select的嵌套使用的方法,对于初学MySQL的朋友有一定的借鉴价值。 这里需要实现在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现该功能需求。具体情形是:有三张表a、...

    mysql中insert与select的嵌套使用解决组合字段插入问题

    如何在mysql从多个表中组合字段然后插入到一个新表中,通过一条sql语句实现。具体情形是:有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,我们可以使用如下的语句来...

    MySql insert插入操作的3个小技巧分享

    insert into A(id,cola) select id,cola from B where colb>1000  2.插入时排除(忽略)重复记录 现表A中有一部分记录了,再做如1中的插入操作可能遇到重复的key导致操作失败 代码如下: insert ignore into A(id,...

    Mysql中replace与replace into的用法讲解

    而replace into其实与insert into很相像,但对于replace into,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。 replace是mysql 里面处理...

    MySQL DML - 插入数据.md

    通过文档,您可以学习如何使用`INSERT INTO`语句将数据插入到MySQL表中。示例代码演示了插入单行和多行数据的方法,并提供了相应的注释以帮助您理解每个步骤。 通过阅读和实践这个文档,您将能够更好地掌握MySQL...

    mysql清除记录数

    1.mysql清空表语句后,新插入的语句会ID会以之前存在的序号记录下去,使用truncate命令清除记录,新插入的语句从1开始 示例: mysql> select id from t1; +----+ | id | +----+ | 1 | | 2 | | 3 | +----+ 清空表 ...

    MySQL中实现插入或更新操作(类似Oracle的merge语句)

    如果需要在MySQL中实现记录不存在则insert,不存在则update操作。可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,...

    如何优化MySQL insert性能

    对于一些数据量较大的系统,面临的问题除了是查询效率低下,还有一个很重要的问题是插入时间长。我们有一个业务系统,每天的数据... INSERT INTO `insert_table` (`datetime`, `uid`, `content`, `type`) VALUES

    Mysql使用insert插入多条记录 批量新增数据

    如果要向table1中插入5条记录,下面写法是错误的: INSERT INTO table1 (id,name) VALUES(1,小明,2,小强,3,小杜,4,小李,5,小白); MySQL将会抛出下面的错误 ERROR 1136: Column count doesn't match value count at...

    MySQL中insert语句的使用与优化教程

    MySQL 表中使用 INSERT INTO SQL语句来插入数据。 你可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 语法 以下为向MySQL数据表插入数据通用的 INSERT INTO SQL语法: INSERT ...

    mysql 选择插入数据(包含不存在列)具体实现

    不在table_b表中 +——+———–+ | name | id | +——+———–+ | name | 123456 | | name | 1234567 | | name | 12345678 | | name | 123456789 | +——+———–+ 4 rows in set (0.00 sec) 代码如下: mysql> ...

    mysql 存在该记录则更新,不存在则插入记录的sql

    代码如下:INSERT table (auto_id, auto_name) values (1, ‘yourname’) ON ...例如,如果列a被定义为UNIQUE,并且包含值1,则以下两个语句具有相同的效果: 代码如下:mysql> INSERT INTO table (a,b,c) VALUES

Global site tag (gtag.js) - Google Analytics