详解MySql如何不插入重复数据

 更新时间:2023年01月17日 08:58:52   作者:苏戏  
本文主要介绍了详解MySql如何不插入重复数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

向数据库的插入值时,需要判断插入是否重复,然后插入。

这种操作怎么提高效率

下面说说一些解决方案

1、insert ignore into

当插入数据时,如出现错误时,如重复数据,将不返回错误,只以警告形式返回。所以使用ignore请确保语句本身没有问题,否则也会被忽略掉。例如:

INSERT IGNORE INTO USER ( NAME )
VALUES ( '张三' );

这种方法很简单,但是有一种可能插入不是因为重复数据报错,而是因为其他原因报错的,也同样被忽略了~

2、on duplicate key update

当primary 或者 unique重复时,则执行update语句;
当update后为无用语句,如:id=id,错误不会被忽略。

INSERT INTO USER ( NAME )
VALUES ( '张三' ) 
ON DUPLICATE KEY UPDATE id = id;

这种方法有个前提条件,就是需要约束条件,即,主键或者唯一约束。

3、insert ... select ... where not exist

根据select的条件判断是否插入

INSERT INTO USER ( NAME ) 
SELECT '张三' FROM DUAL 
WHERE NOT EXISTS (SELECT id FROM USER WHERE id = 1)

这种方法其实就是使用mysql的一个临时表的方式,但是里面使用子查询,效率会有影响,能不使用尽量避免。

4、replace into

如果存在 primary 或者 unique 相同的记录,则先删除再插入新记录。

REPLACE INTO USER SELECT 1, '张三' FROM USER

这种方法就是不管原来有没有相同的记录,都会先删除再插入。

到此这篇关于详解MySql如何不插入重复数据的文章就介绍到这了,更多相关MySql不插入重复数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • SQL使用WHERE条件语句的项目实践

    SQL使用WHERE条件语句的项目实践

    本文将介绍WHERE子句中使用的通用语法,它还将概述如何在单个WHERE子句中组合多个搜索条件谓词以更细粒度的方式过滤数据,以及如何使用NOT操作符排除而不是包含满足给定搜索条件的行,感兴趣的可以了解一下
    2023-09-09
  • mysql中between的边界,范围说明

    mysql中between的边界,范围说明

    这篇文章主要介绍了mysql中between的边界,范围说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • mysql cmd常用命令

    mysql cmd常用命令

    mysql cmd常用命令,偶尔需要命令行执行mysql的朋友可以参考下。
    2011-05-05
  • 深入浅出讲解MySQL的并行复制

    深入浅出讲解MySQL的并行复制

    这篇文章主要给大家介绍了关于MySQL并行复制的相关资料,文中通过示例代码介绍的非常详细,对大家学习或使用mysql具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-08-08
  • mysql order by 排序原理解析

    mysql order by 排序原理解析

    当涉及到大量数据时,对于 ORDER BY 操作,可以考虑为相应的列添加索引,如果不使用索引,mysql会使用filesort来进行排序,这篇文章主要介绍了mysql order by 排序原理,需要的朋友可以参考下
    2024-02-02
  • MySQL慢查询日志中的Lock_time由来解析

    MySQL慢查询日志中的Lock_time由来解析

    这篇文章主要为大家介绍了慢查询日志中Lock_time的由来解析,以及Lock_time 包含哪些锁等待时间、以及是怎么计算得到的,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2023-06-06
  • mysql 双向同步的键值冲突问题的解决方法分享

    mysql 双向同步的键值冲突问题的解决方法分享

    多主互备和主从复制有一些区别,因为多主中都可以对服务器有写权限,所以设计到自增长重复问题
    2011-09-09
  • mysql中Update未加索引导致的微服务模块不可用

    mysql中Update未加索引导致的微服务模块不可用

    本文主要介绍了mysql中Update未加索引导致的微服务模块不可用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • MySQL 锁的相关知识总结

    MySQL 锁的相关知识总结

    这篇文章主要介绍了MySQL 锁的相关知识总结,帮助大家更好的理解和使用MySQL数据库,感兴趣的朋友可以了解下
    2021-01-01
  • Mysql数据库之常用sql语句进阶与总结

    Mysql数据库之常用sql语句进阶与总结

    这篇文章主要介绍了Mysql数据库之常用sql语句,总结分析了MySQL数据库常用的查询、条件查询、排序、连接查询、子查询等相关操作技巧,需要的朋友可以参考下
    2019-11-11

最新评论