在 SQL 中去除重复数据,主要使用 DISTINCT 关键字或 GROUP BY 子句。以下是具体方法及示例:
1. 使用 DISTINCT(适用于查询结果去重)
直接筛选所有列或指定列的唯一组合:
-- 去除所有列的重复数据(所有列值完全相同才算重复)
SELECT DISTINCT * FROM 表名;
-- 去除指定列的重复数据(例如:基于 column1 和 column2 去重)
SELECT DISTINCT column1, column2 FROM 表名;
2. 使用 GROUP BY(更灵活,可搭配聚合函数)
按指定列分组,返回唯一组合:
-- 基本去重(效果同 DISTINCT column1, column2)
SELECT column1, column2
FROM 表名
GROUP BY column1, column2;
-- 搭配聚合函数(例如:保留重复组中某列的统计值)
SELECT column1, MAX(column2) AS max_value
FROM 表名
GROUP BY column1;
3. 删除表中的物理重复数据(需谨慎操作)
方法 1:使用临时表(通用且安全)
-- 步骤 1:创建临时表存储去重后的数据
CREATE TABLE 新表名 AS
SELECT DISTINCT * FROM 原表名; -- 或使用 GROUP BY
-- 步骤 2:删除原表,重命名新表
DROP TABLE 原表名;
ALTER TABLE 新表名 RENAME TO 原表名;
方法 2:使用 ROW_NUMBER()(适用于保留特定行)
-- 示例:保留每组重复数据中 id 最小的记录
DELETE FROM 表名
WHERE id NOT IN (
SELECT MIN(id)
FROM 表名
GROUP BY column1, column2 -- 按需指定去重列
);
方法 3:直接删除(MySQL 示例)
DELETE t1
FROM 表名 t1
INNER JOIN 表名 t2
ON t1.column1 = t2.column1
AND t1.column2 = t2.column2
AND t1.id > t2.id; -- 保留 id 较小的记录
⚠️ 注意事项:
- 备份数据:删除重复数据前务必备份原表!
- 明确去重逻辑:确认是按所有列还是部分列去重,并决定保留哪一行(如最小/最大 ID、最新时间等)。
- 性能考虑:大表去重时,建议在低峰期操作,或分批次处理。
- 事务支持:在事务中执行删除操作,便于出错时回滚(如 SQL Server 使用
BEGIN TRANSACTION)。
示例场景:
表 users: |
id | name | |
|---|---|---|---|
| 1 | Alice | alice@mail.com | |
| 2 | Bob | bob@mail.com | |
| 3 | Alice | alice@mail.com | ← 重复记录 |
去重操作:
-- 查询去重结果
SELECT DISTINCT name, email FROM users;
-- 物理删除重复数据(保留最小 id)
DELETE FROM users
WHERE id NOT IN (
SELECT MIN(id)
FROM users
GROUP BY name, email
);
| 结果: | id | name | |
|---|---|---|---|
| 1 | Alice | alice@mail.com | |
| 2 | Bob | bob@mail.com |
python去除list中重复的数据
Python是一个强大的编程语言,提供了许多解决问题的方法和功能。其中一个常见的问题是如何去除列表中的重复数据。在本文中,我们将详细介绍Python中去除列表中重复数据的几种方法,包括使用循环
2023-11-21 15:49:14
如何过滤掉MySQL大批量插入的重复数据
线上库有6个表存在重复数据,其中2个表比较大,一个96万+、一个30万+,因为之前处理过相同的问题,就直接拿来了上次的Python去重脚本,脚本很简单,就是连接数据库,查出来重复数据,循环删除
2021-08-27 11:00:35
数据库数据恢复—SQL Server数据库被加密如何恢复数据?
SQL Server数据库故障: SQL Server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。
2025-06-25 13:54:56
数据库数据恢复—SQL Server数据库出现823错误的数据恢复案例
SQL Server数据库故障: SQL Server附加数据库出现错误823,附加数据库失败。数据库没有备份,无法通过备份恢复数据库。 SQL Server数据库出现823错误的可能原因有:数据库物理页面损坏、数据库物理页面校验值损坏导致无法识别该页面、断电或者文件系统问题导致页面丢失。
2024-09-20 11:46:45
SQL Server数据库备份方法
SQL Server是一种用于管理和存储数据的关系型数据库管理系统。备份数据库是保护和恢复数据的重要措施之一,以防止意外数据丢失。在本文中,我们将详细介绍SQL Server数据库备份的方法。 1.
2023-11-23 14:27:27
SQL 通用数据类型
SQL 通用数据类型 数据库表中的每个列都要求有名称和数据类型。Each column in a database table is required to have a name and a
2025-08-18 09:46:40
hibernate中离线查询去除重复项怎么加条件
1. hibernate中离线查询去除重复项怎么加条件?dc.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); 2. http协议及端口
djfldsthtr
2021-08-09 06:27:38
MySQL数据库:如何操作禁止重复插入数据
在MySQL进行数据插入操作时,总是会考虑是否会插入重复数据,之前的操作都是先根据主键或者唯一约束条件进行查询,有就进行更新没有就进行插入。代码反复效率低下。
2020-10-08 14:15:00
数据库数据恢复—SQL Server数据库所在分区空间不足报错的数据恢复案例
Server数据库故障: 存放SQL Server数据库的D盘分区容量不足,管理员在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续使用。数据库继续运行一段时间后出现故障并报错,连接失效,SqlServer数据库无法附加查询。管理员多次尝试恢复数据库数据但是没有成功。
2024-07-10 13:54:18
【数据库数据恢复】SQL SERVER数据库MDF(NDF)或LDF损坏怎么恢复数据?
基于MDF(或NDF)文件结构使用北亚自主开发的“SQL SERVER数据库检测”软件检测数据库内部的逻辑结构,确定数据库恢复的可能性。
2022-11-16 11:52:36
三种策略可以帮助您充分利用数据备份
重复数据删除的过程基于查找和消除重复数据块。它涉及检查文件中的数据并仅存储自上次备份操作以来已更改的块。使用索引,重复数据删除跟踪要删除重复数据的唯一块或文件。
2023-01-30 17:10:11
python处理重复值的方法
处理重复值是数据处理中常见的任务之一。在Python中,有几种有效的方法可以处理重复值,包括使用集合、字典和pandas库等。 使用集合 集合数据结构是Python中用于存储唯一元素的一种数据
2023-11-21 15:47:49
【数据库数据恢复】MS SQL数据库提示“附加数据库错误 823”如何恢复数据?
MS SQL Server是微软公司研发的数据库管理系统,SQL Server是一个可扩展的、高性能的、与WindowsNT有机结合的,为分布式客户机/服务器所设计的数据库管理系统,提供基于事务
2022-12-08 12:07:18
sql数据库安装失败
安装数据库出现这个错误安装sql数据库报错sql服务器设置媒体不支持 或没有指定本地化文件 使用匹配的语言专用sql有没有人遇到过
h1654155607.1162
2019-10-22 09:45:51
如何查找多列上的重复行
第一步是定义什么样的行才是重复行。多数情况下很简单:它们某一列具有相同的值。本文采用这一定义,或许你对“重复”的定义比这复杂,你需要对sql做些修改。本文要用到的数据样本。
2022-09-14 09:05:39
数据库SQL的优化
数据库执行SQL都会先进行语义解析,然后将SQL分成一步一步可执行的计划,然后逐步执行。通过分析执行计划,我们可以清晰的看到数据库执行的操作,这对于数据库SQL的优化具有重大意义。 1. 执行计划
2023-10-09 15:43:51
创建唯一索引的SQL命令和技巧
在创建唯一索引时,以下是一些SQL命令和技巧,可以帮助优化性能: 使用合适的索引类型:对于需要保证唯一性的列,使用UNIQUE索引来避免重复数据的插入。 这可以确保列中的值是唯一的,同时提高查询效率
2025-01-09 15:21:15
Python中如何表达复数
在Python中,可以使用complex类型来表示和操作复数。复数是由一个实部和一个虚部组成的数,可以使用下列格式来表示:real + imag*j,其中real是实部,imag是虚部。在
2023-11-21 16:50:49
Devart: dbForge Compare Bundle for SQL Server—比较SQL数据库最简单、最准确的方法
dbForge Compare Bundle For SQL Server:包含两个工具,可帮助您节省用于手动数据库比较的 70% 的时间 dbForge数据比较 帮助检测和分析实时SQL数据
2025-01-17 11:35:30
sql数据库入门基础知识
SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的编程语言。它被广泛应用于企业应用、数据仓库和网站开发等领域。了解SQL的基础知识是成为一名数据
2023-11-23 14:24:16
单片机使用本地SQL数据库功能
历史上,sql数据库都是后台的专利,底层单片机使用sql数据库是天方夜谭。很多时候,底层都需要存储一段时间的数据,例如近一年的交易数据,且要能对特定数据快速查询,这种功能单片机往往很难去做。 现在
lwy1818
2022-07-01 16:57:20
sql是什么意思网络用语
sql是什么意思?sql是结构化查询语言(Structured Query Language)的缩写。它是一种专门用于管理关系型数据库系统的编程语言。sql用于执行各种数据库操作,包括创建、修改
2023-10-13 17:31:51
SQL注入攻击是什么 SQL注入会带来哪些威胁
AQL的定义 SQL是操作数据库数据的结构化查询语言,网页的应用数据和后台数据库中的数据进行交互时会采用SQL。而SQL注入是将Web页面的原URL、表单域或数据包输入的参数,修改拼接成SQL语句
2021-08-04 17:40:47
SQL SERVER数据库数据恢复案例
数据库数据恢复环境: 某品牌存储存放大小约80TB的SQL SERVER数据库,数据库包含两个LDF文件,每10天生成一个500GB大小的NDF文件。 数据库故障&分析: 存储损坏,SQL SERVER数据库不可用。对数据库文件进行恢复后发现有几个NDF文件大小变为0KB。
2022-09-29 11:39:19
基础SQL语句-使用SELECT索引数据
SELECT 语句是最常用的SQL语句了,用来索引一个或者多个表信息。关键字(keyword)作为SQL组成部分的字段,关键字不能作为表或者列的名字。使用SELECT索引数据,必须至少给出两条信息
hongqiaolian
2022-11-03 14:34:42
SQL与NoSQL的区别
在信息技术领域,数据库是存储和管理数据的核心组件。随着互联网的发展和大数据时代的到来,对数据库的需求也在不断变化。SQL和NoSQL作为两种主流的数据库管理系统,各自有着独特的优势和应用场
2024-11-19 10:15:53
连接oracle数据库,封装sql执行子vi
连接oracle数据库,封装sql执行子vi。连接oracle数据库可以安装oracle客户端,或者通过odbc的方式去连接。连接后,可通过封装的子vi,执行sql语句。
周一一一一
2019-07-03 12:07:33
如何使用SQL数据生成器生成测试数据
在本文中,我们将研究用虚拟数据填充员工数据库的过程,我们预先设计了它的模式。用虚拟数据填充SQL数据库对于运行测试很有用。最简单的方法是使用可视数据生成工具用随机数据填充SQL表。
2022-10-09 17:40:41
SQL后悔药,SQL性能优化和SQL规范优雅
每一个好习惯都是一笔财富,本文基于MySQL,分SQL后悔药, SQL性能优化,SQL规范优雅三个方向,分享写SQL的21个好习惯,谢谢阅读,加油哈~ 1. 写完SQL先explain查看执行计划
2020-11-14 09:54:27
