SQL查询,如何去除重复的记录

SQL查询,如何去除重复的记录,第1张

首先,先说明一个问题。这样的结果出现,说明系统设计是有问题的。

其次

删除重复数据,你要提供你是什么数据库。

不同数据库会有不同的解决方案。

关键字Distinct 去除重复,如下列SQL,去除Test相同的记录;

1 select distinct Test from Table

2 如果是要删除表中存在的重复记录,那就逻辑处理,如下:

3 select Test from Table group by Test having count(test)>1

4 先查询存在重复的数据,后面根据条件删除

还有一个更简单的方法可以尝试一下:

select aid, count(distinct uid) from 表名 group by aid

这是sqlserver 的写法。

如图一在数据表中有两个膀胱冲洗重复的记录。

2

可以通过sql语句“select from 表名 where 编码 in(select 编码 from 表名 group by 编码 having count(1) >= 2)”来查询出变种所有重复的记录如图二

3

通过sql语句"

delete from 表名 where

编码 in(select 编码 from 表名 group by 编码 having count(1) >= 2)

and 编码 not in (select max(编码)from 表名 group by 编码 having count(1) >=2)

"来删除重复的记录只保留编码最大的记录

示例

假设存在一个产品信息表Products,其表结构如下:

CREATE TABLE Products (  

ProductID int,  

ProductName nvarchar (40),  

Unit char(2),  

UnitPrice money  

)

表中数据如图:

图中可以看出,产品Chang和Tofu的记录在产品信息表中存在重复。现在要删除这些重复的记录,只保留其中的一条。步骤如下:

第一步——建立一张具有相同结构的临时表

CREATE TABLE Products_temp (  

ProductID int,  

ProductName nvarchar (40),  

Unit char(2),  

UnitPrice money  

)

第二步——为该表加上索引,并使其忽略重复的值

方法是在企业管理器中找到上面建立的临时表Products _temp,单击鼠标右键,选择所有任务,选择管理索引,选择新建。如图2所示。

按照图2中圈出来的地方设置索引选项

第三步——拷贝产品信息到临时表

insert into Products_temp Select  from Products

此时SQL Server会返回如下提示:

服务器: 消息 3604,级别 16,状态 1,行 1

已忽略重复的键。

它表明在产品信息临时表Products_temp中不会有重复的行出现。

第四步——将新的数据导入原表

将原产品信息表Products清空,并将临时表Products_temp中数据导入,最后删除临时表Products_temp。

delete Products  insert into Products select  from Products_temp drop table Products_temp

这样就完成了对表中重复记录的删除。无论表有多大,它的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的

MYSQL里有五百万数据,但大多是重复的,真实的就180万,于是想怎样把这些重复的数据搞出来,在网上找了一圈,好多是用NOT IN这样的代码,这样效率很低,自己琢磨组合了一下,找到一个高效的处理方式,用这个方式,五百万数据,十来分钟就全部去除重复了,请各位参考。

第一步:从500万数据表data_content_152里提取出不重复的字段SFZHM对应的ID字段到TMP3表

1 create table tmp3 as select min(id) as col1 from data_content_152 group by SFZHM;

第二步:创建新表RES

1234 CREATE TABLE `res` (`id` int(11),`sfz` char(20)) ENGINE=MyISAM;

第三步:把TMP3表ID对应到data_content_152里需要提取的数据添加到RES表的SFZ字段

1 INSERT INTO res (sfz) SELECT sfzhm FROM data_content_152,tmp3 where data_content_152id=tmp3col1

至此,就在MYSQL里实现了,给数据表data_content_152完全删除重复数据,把去重复后的数据导入到RES表。

以上就是关于SQL查询,如何去除重复的记录全部的内容,包括:SQL查询,如何去除重复的记录、sql数据库中出现重复行数据,如何删除这些重复记录、怎么删除重复的Mysql数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10192150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存