Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >MariaDB 管理重复表数据

MariaDB 管理重复表数据

原创
作者头像
用户9042463
修改于 2021-09-29 09:52:18
修改于 2021-09-29 09:52:18
1.3K00
代码可运行
举报
文章被收录于专栏:运维技巧分享运维技巧分享
运行总次数:0
代码可运行

在某些情况下,重复确实会导致问题,并且它们常常由于隐式动作或MariaDB命令的宽松策略而出现。 有多种方法可以控制此问题,查找重复项,删除重复项,并防止重复创建。

策略和工具

有四个关键方法来管理重复 -

  • 使用JOIN关联,并用临时表删除他们。
  • 使用INSERT ... ON DUPLICATE KEY UPDATE在发现重复时更新。
  • 使用DISTINCT修剪SELECT语句的结果并删除重复的。
  • 使用INSERT IGNORE停止插入重复项。

使用连接临时表

只需像内部联接那样执行半连接,然后删除使用临时表找到的重复。

使用INSERT

当INSERT ... ON DUPLICATE KEY UPDATE发现重复的唯一或主键时,它执行更新。 发现多个唯一键时,它只更新第一个。 因此,不要在具有多个唯一索引的表上使用它。

查看以下示例,该示例显示在插入到填充字段时在包含索引值的表中发生的情况 -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
INSERT INTO add_dupl VALUES (1,'Apple');
ERROR 1062 (23000): Duplicate entry '1' for key 'PRIMARY'

注意 - 如果没有找到任何键,INSERT ... ON DUPLICATE KEY UPDATE语句的执行方式与正常的insert语句相似。

使用DISTINCT

DISTINCT子句从结果中删除重复项。 DISTINCT子句的一般语法如下 -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT DISTINCT fields
FROM table
[WHERE conditions];

- 带有DISTINCT子句的语句的结果 -

  • 当使用一个表达式时,它为它返回唯一的值。
  • 当使用多个表达式时,它返回唯一的组合。
  • 它不会忽略NULL值; 因此,结果还包含NULL作为唯一值。

使用单个表达式的DISTINCT子句查看以下语句 -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT DISTINCT product_id
FROM products
WHERE product_name = 'DustBlaster 5000';

使用多个表达式查看以下示例 -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SELECT DISTINCT product_name, product_id
FROM products
WHERE product_id < 30

使用INSERT IGNORE

INSERT IGNORE语句指示MariaDB在发现重复记录时取消插入。 查看下面给出的使用示例 -

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mysql> INSERT IGNORE INTO customer_tbl (LN, FN)
   VALUES( 'Lex', 'Luther');

另外,注意重复的逻辑。 某些表基于表数据的性质需要重复。 满足您在管理重复记录的策略中的需要。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SQL基础查询
对含有NULL数据的列使用DISTINCT关键字 NULL也被视为一类数据,如果存在多行NULL时,将被合并成一行。
活用数据
2019/06/03
2.3K0
SQL基础查询
新闻推荐实战(一):MySQL基础
本文属于新闻推荐实战—数据层—构建物料池之MySQL。MySQL数据库在该项目中会用来存储结构化的数据(用户、新闻特征),作为算法工程师需要了解常用的MySQL语法(比如增删改查,排序等),因为在实际的工作经常会用来统计相关数据或者抽取相关特征。本着这个目的,本文对MySQL常见的语法及Python操作MySQL进行了总结,方便大家快速了解。文末附上参考资料
用户9656380
2022/04/14
2.2K0
新闻推荐实战(一):MySQL基础
MySQL 教程上
MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。
acc8226
2022/05/17
3.6K0
学习SQL【5】-数据更新
数据的更新处理大体可以分为插入(INSERT)、删除(DELETE)和更新(UPDATE)三类,此外,还会给大家介绍数据库中用来管理数据更新的重要概念—事务。 一:数据的插入(INSERT语句) 1:要学习INSERT语句,我们得首先创建一个名为ProductIns的表。 创建表ProductIns的语句如下: CREATE TABLE ProductIns ( product_id CHAR(4) NOT NULL, product_name VARC
爱吃西瓜的番茄酱
2018/04/04
2.8K0
【MySQL】表数据的CRUD操作详解
CRUD : Create(创建), Retrieve(读取),Update(更新),Delete(删除)
用户11316056
2025/02/26
1130
【MySQL】表数据的CRUD操作详解
MySQL 【教程三】
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务,详细了解可以看一下这篇【常识与进阶】!
IT茂茂
2020/03/26
2.2K0
【测试SQLite】测试SQLite支持的SQL语句分类
为了全面测试SQLite支持的SQL语句,需要设计一个包含多种类型的表结构,并编写各种SQL语句来测试这些功能。目前按照以下分类进行测试:
SarPro
2024/05/24
4890
【测试SQLite】测试SQLite支持的SQL语句分类
36条MySQL实用小技巧
实际上一直都有在学习,只是公众号的算法机制让很多人刷不到,看得人比较少,这才将这些内容分享到各个群和朋友圈,希望能让更多人看到。
SQL数据库开发
2024/04/25
1500
36条MySQL实用小技巧
数据库基础,看完这篇就够了!
对于测试同学来说,除了知道测试基础知识外,还需要掌握一些测试基本技能,主要有Linux、数据库、计算机网络等,在此之前我们已经讨论过Linux基础知识以及在实际工作中的应用,可参考往期文章「学会Linux,看完这篇就行了!」。
测试蔡坨坨
2022/12/21
3K0
数据库基础,看完这篇就够了!
MySQL 处理重复数据的方式
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
用户9042463
2021/09/30
2.3K0
Mybatis新增数据,存在就更新,不存在就添加
这样一来,如果表中已经存在last_name='LeBron'且first_name='James'的数据,就不会插入,如果没有就会插入一条新数据。
chenchenchen
2021/09/06
16.7K0
如何编写不存在即插入的 SQL
MySQL 已提供了 INSERT IGNORE INTO 、REPLACE INTO、INSERT … ON DUPLICATE KEY UPDATE 等表达式实现不重复插入的功能,不过,要使用这些表达式,表上必须有主键或者唯一索引字段,主键或者唯一索引作为判断重复记录的依据。
白日梦想家
2020/07/20
1.8K0
MySQL 如何处理重复数据
有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。
用户1685462
2021/07/17
2.2K0
学习SQL【8】-谓词和CASE表达式
谓词 什么是谓词 谓词就是返回值为真值的函数。对于通常的函数来说,返回值有可能是数字、字符串和日期等,但是谓词的返回值全部是真值。这也是谓词和函数的最大区别。 谓词主要有以下几种: LIKE BETWEEN IS NULL、IS NOT NULL IN EXISTS LIKE谓词—字符串的部分一致查询 截止目前,我们使用字符串作为查询条件的例子使用的都是=。这里的=只有在字符串完全一致时才为真。与之相反,LIKE谓词更加模糊一些,当需要进行字符串的部分一致查询时需要使用该谓词。 部分一致大体可以分为前方一致
爱吃西瓜的番茄酱
2018/04/04
2.3K0
Merge into的使用详解-你Merge了没有「建议收藏」
Merge是一个非常有用的功能,类似于Mysql里的insert into on duplicate key.
全栈程序员站长
2022/09/06
1.5K0
数据操纵:SELECT, INSERT, UPDATE, DELETE
1 SELECT 句法 2 3 SELECT [STRAIGHT_JOIN] 4 [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] 5 [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] [HIGH_PRIORITY] 6 [DISTINCT | DISTINCTROW | ALL] 7 select_expression
用户1112962
2018/07/03
2.4K0
数据库相关知识总结
聚集函数(aggregate function) 运行在行组上,计算和返回单个值的函数
范中豪
2021/04/25
3.4K0
【Java 进阶篇】深入理解SQL的数据操作语言(DML)
SQL(Structured Query Language)是一种用于管理和操作关系数据库的强大语言。SQL语言被分为多个子语言,其中之一是DML(Data Manipulation Language),用于执行与数据的操作和管理相关的任务。在本文中,我们将深入探讨DML的各个方面,从基础操作到高级技巧,以帮助初学者更好地理解和使用SQL的DML。
繁依Fanyi
2023/10/12
4420
【Java 进阶篇】深入理解SQL的数据操作语言(DML)
MySQL安装
在任何版本的 Windows 默认安装是现在比以前要容易得多,MySQL巧妙地打包安装程序。只需下载安装包,随地把它解压缩,并运行 mysql.exe. 下载地址:http://dev.mysql.com/downloads/ 页面如下图所示:
botkenni
2022/01/10
11.4K0
MySQL安装
MySQL 【进阶查询】
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务,详细了解可以看一下这篇【常识与进阶】!
IT茂茂
2020/03/27
12.5K0
MySQL 【进阶查询】
相关推荐
SQL基础查询
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验