Mysql避免重复插入数据的4种方式

作者:xcbeyond 时间:2024-01-23 06:19:54 

最常见的方式就是为字段设置主键或唯一索引,当插入重复数据时,抛出错误,程序终止,但这会给后续处理带来麻烦,因此需要对插入语句做特殊处理,尽量避开或忽略异常,下面我简单介绍一下,感兴趣的朋友可以尝试一下:

这里为了方便演示,我新建了一个user测试表,主要有id,username,sex,address这4个字段,其中主键为id(自增),同时对username字段设置了唯一索引:

01 insert ignore into

即插入数据时,如果数据存在,则忽略此次插入,前提条件是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条数据时,MySQL数据库会首先检索已有数据(也就是idx_username索引),如果存在,则忽略本次插入,如果不存在,则正常插入数据:

Mysql避免重复插入数据的4种方式

02 on duplicate key update

即插入数据时,如果数据存在,则执行更新操作,前提条件同上,也是插入的数据字段设置了主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则执行update更新操作,如果不存在,则直接插入:

Mysql避免重复插入数据的4种方式

03 replace into

即插入数据时,如果数据存在,则删除再插入,前提条件同上,插入的数据字段需要设置主键或唯一索引,测试SQL语句如下,当插入本条记录时,MySQL数据库会首先检索已有数据(idx_username索引),如果存在,则先删除旧数据,然后再插入,如果不存在,则直接插入:

Mysql避免重复插入数据的4种方式

04 insert if not exists

即insert into … select … where not exist ... ,这种方式适合于插入的数据字段没有设置主键或唯一索引,当插入一条数据时,首先判断MySQL数据库中是否存在这条数据,如果不存在,则正常插入,如果存在,则忽略:

Mysql避免重复插入数据的4种方式

目前,就分享这4种MySQL处理重复数据的方式吧,前3种方式适合字段设置了主键或唯一索引,最后一种方式则没有此限制,只要你熟悉一下使用过程,很快就能掌握的,网上也有相关资料和教程,介绍的非常详细,感兴趣的话,可以搜一下

来源:https://juejin.cn/post/6923558675277676558

标签:Mysql,重复插入
0
投稿

猜你喜欢

  • Python数据分析之 Matplotlib 折线图绘制

    2023-12-05 02:18:13
  • Python编写合并字典并实现敏感目录的小脚本

    2023-05-28 18:36:29
  • Python实现识别图像中人物的示例代码

    2023-11-10 01:59:19
  • JavaScript Distilled 基础知识与函数

    2024-05-02 16:29:23
  • 用javascript实现的汉字简繁转换功能

    2008-05-04 13:15:00
  • 回调函数的意义以及python实现实例

    2021-07-17 11:42:07
  • SQL-ORDER BY 多字段排序(升序、降序)

    2024-01-28 05:25:55
  • python数据类型相关知识扩展

    2021-12-21 10:20:07
  • 如何使用python批量修改文本文件编码格式

    2021-02-15 14:01:30
  • Python使用turtule画五角星的方法

    2022-11-10 04:51:31
  • 利用webstrom调试Vue.js单页面程序的方法教程

    2023-06-27 01:21:25
  • ASP.NET Core基础之Startup类

    2024-05-09 09:05:07
  • python基础之多态

    2022-04-05 10:06:06
  • Python+folium绘制精美地图的示例详解

    2023-07-26 13:17:06
  • python如何判断IP地址合法性

    2022-12-25 06:09:29
  • python简单实现旋转图片的方法

    2021-06-09 08:29:11
  • web开发以HTML为中心

    2008-02-13 08:14:00
  • python 包之 threading 多线程

    2021-06-03 19:54:41
  • 网页设计之关于素材和言志

    2008-03-23 13:46:00
  • 三种Golang数组拷贝方式及性能分析详解

    2023-07-13 07:54:27
  • asp之家 网络编程 m.aspxhome.com