iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >怎么使用SQL语句去掉重复的记录
  • 620
分享到

怎么使用SQL语句去掉重复的记录

2024-04-02 19:04:59 620人浏览 八月长安
摘要

今天就跟大家聊聊有关怎么使用sql语句去掉重复的记录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。海量数据(百万以上),其中有些全部字段都相同,有些

今天就跟大家聊聊有关怎么使用sql语句去掉重复的记录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

海量数据(百万以上),其中有些全部字段都相同,有些部分字段相同,怎样高效去除重复?

如果要删除手机(mobilePhone),电话(officePhone),邮件(email)同时都相同的数据,以前一直使用这条语句进行去重:

delete from 表 where id not in  (select max(id) from 表 group by mobilePhone,officePhone,email )  or delete from 表 where id not in   (select min(id) from 表 group by mobilePhone,officePhone,email ) delete from 表 where id not in (select max(id) from 表 group by mobilePhone,officePhone,email ) or delete from 表 where id not in  (select min(id) from 表 group by mobilePhone,officePhone,email )

其中下面这条会稍快些。上面这条数据对于100万以内的数据效率还可以,重复数1/5的情况下几分钟到几十分钟不等,但是如果数据量达到300万以上,效率骤降,如果重复数据再多点的话,常常会几十小时跑不完,有时候会表跑一夜都跑不完。无奈只得重新寻找新的可行方法,今天终于有所收获:

//查询出唯一数据的ID,并把他们导入临时表tmp中  select min(id) as mid into tmp from 表 group by mobilePhone,officePhone,email   //查询出去重后的数据并插入finally表中  insert into finally select (除ID以外的字段) from customers_1 where id in (select mid from tmp) //查询出唯一数据的ID,并把他们导入临时表tmp中 select min(id) as mid into tmp from 表 group by mobilePhone,officePhone,email  //查询出去重后的数据并插入finally表中 insert into finally select (除ID以外的字段) from customers_1 where id in (select mid from tmp)

效率对比:用delete方法对500万数据去重(1/2重复)约4小时。4小时,很长的时间。

用临时表插入对500万数据去重(1/2重复)不到10分钟。

其实用删除方式是比较慢的,可能是边找边删除的原因吧,而使用临时表,可以将没有重复的数据ID选出来放在临时表里,再将表的信息按临时表的选择出来的ID,将它们找出来插入到新的表,然后将原表删除,这样就可以快速去重啦。

SQL语句去掉重复记录,获取重复记录

按照某几个字段名称查找表中存在这几个字段的重复数据并按照插入的时间先后进行删除,条件取决于order by 和row_num。

方法一按照多条件重复处理:

delete tmp from(  select row_num = row_number() over(partition by 字段,字段 order by 时间 desc)   from 表 where 时间> getdate()-1   ) tmp   where row_num > 1 delete tmp from( select row_num = row_number() over(partition by 字段,字段 order by 时间 desc)  from 表 where 时间> getdate()-1  ) tmp  where row_num > 1

方法二按照单一条件进行去重:

delete from 表 where 主键ID not in(  select max(主键ID) from 表 group by 需要去重的字段 having count(需要去重的字段)>=1   ) delete from 表 where 主键ID not in( select max(主键ID) from 表 group by 需要去重的字段 having count(需要去重的字段)>=1  )

注意:为提高效率如上两个方法都可以使用临时表, not in 中的表可以先提取临时表#tmp,

然后采用not exists来执行,为避免数量过大,可批量用Top控制删除量

delete top(2) from 表     where not exists (select 主键ID   from #tmp where #tmp.主键ID=表.主键ID)

看完上述内容,你们对怎么使用SQL语句去掉重复的记录有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网数据库频道,感谢大家的支持。

您可能感兴趣的文档:

--结束END--

本文标题: 怎么使用SQL语句去掉重复的记录

本文链接: https://www.lsjlt.com/news/68888.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么使用SQL语句去掉重复的记录
    今天就跟大家聊聊有关怎么使用SQL语句去掉重复的记录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。海量数据(百万以上),其中有些全部字段都相同,有些...
    99+
    2024-04-02
  • SQL语句怎么去掉重复记录并获取重复记录
    这篇文章将为大家详细讲解有关SQL语句怎么去掉重复记录并获取重复记录,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。SQL语句去掉重复记录,获取重复记录 --...
    99+
    2024-04-02
  • sql查询如何去掉重复记录
    要去掉重复记录,可以使用SQL中的DISTINCT关键字来实现。例如,下面的查询将返回去掉重复记录的结果集: SELECT ...
    99+
    2024-04-09
    sql
  • 利用SQL语句怎么删除重复的记录
    利用SQL语句怎么删除重复的记录?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。如果要删除手机(mobilePhone),电话(...
    99+
    2024-04-02
  • 使用SQL语句怎么删除重复记录并只保留一条
    本篇文章为大家展示了使用SQL语句怎么删除重复记录并只保留一条,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1、查找表中多余的重复记录,重复记录是根据单个字段(pe...
    99+
    2024-04-02
  • SQL语句删除重复记录且只保留一条有效记录
    1.查找表中多余的重复记录,重复记录是根据单个字段(name)来判断 select * from libwhere name in (select name from lib group by name ha...
    99+
    2023-09-02
    数据库 mysql Powered by 金山文档
  • 怎么用SQL语句删除表中的记录
    要用SQL语句删除表中的记录,可以使用DELETE FROM语句。语法如下:```DELETE FROM 表名 WH...
    99+
    2023-09-16
    SQL
  • C语言怎么去掉数组重复值
    可以使用两层循环来遍历数组,比较每两个元素是否相同,如果相同则将其中一个元素删除。以下是一个示例代码:```c#include vo...
    99+
    2023-09-26
    C语言
  • MySQL中通过SQL语句删除重复记录并且只保留一条记录
    目录一、单个字段的操作1、 查询全部重复的数据2、删除全部重复试题3、查询表中多余重复试题(根据depno来判断,除了rowid最小的一个)4、删除表中多余重复试题并且只留1条二、多个字段的操作总结最近在做题库系统,由于...
    99+
    2023-01-04
    MySQL删除重复记录 MySQLSQL删除重复
  • 使用php怎么去掉数组中的重复项
    今天就跟大家聊聊有关使用php怎么去掉数组中的重复项,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。在php中我们可以利用array_unique函数来移除数组中的重复项,我们先来介绍...
    99+
    2023-06-15
  • SQL中怎么查询重复记录
    今天就跟大家聊聊有关SQL中怎么查询重复记录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1、查找表中多余的重复记录,重复记录是根据单个字段(peo...
    99+
    2024-04-02
  • sqlserver怎么去掉重复的数据
    在 SQL Server 中,可以使用 DISTINCT 关键字来去掉重复的数据。例如,如果你有一张名为 table1 的表,其中有...
    99+
    2024-04-09
    sqlserver
  • java怎么去掉重复的数据
    在Java中,可以使用Set来去除重复的数据。Set是Java中的一种集合类型,它不允许包含重复的元素。 以下是一个示例代码,展示如...
    99+
    2023-10-26
    java
  • SQL中怎么删除ACCESS重复记录
    这期内容当中小编将会给大家带来有关SQL中怎么删除ACCESS重复记录,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 有两个意义上的重复记录,一是完全重复的记录...
    99+
    2024-04-02
  • 如何利用sql语句复制一条或多条记录
    这篇文章主要介绍了如何利用sql语句复制一条或多条记录,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。insert into article (i...
    99+
    2023-06-08
  • 怎么使用sql语句insert之前判断是否已存在记录
    今天就跟大家聊聊有关怎么使用sql语句insert之前判断是否已存在记录,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。sql语句insert之前判断是否已存在记录INSERT&nbs...
    99+
    2023-06-22
  • sql的delete语句怎么使用
    DELETE 语句用于从数据库表中删除记录。其基本语法如下: DELETE FROM table_name WHERE...
    99+
    2024-04-09
    sql
  • SQL的UPDATE语句怎么使用
    UPDATE语句用于修改数据库表中的数据记录。它的基本语法如下:```UPDATE 表名SET 列名1 = 值1, 列名2 = 值2...
    99+
    2023-08-09
    SQL UPDATE
  • sql语句中union的用法与踩坑记录
    目录sql语句union的用法补充:SQLUNION踩过的坑总结sql语句union的用法  union联合的结果集不会有重复值,如果...
    99+
    2024-04-02
  • sql两表关联怎么避免重复记录
    在进行SQL两表关联时,可以通过使用DISTINCT关键字来避免重复记录。DISTINCT关键字可以在SELECT语句中用于返回唯一...
    99+
    2024-04-09
    sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作