`
buliedian
  • 浏览: 1238443 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

如何在MSSQL删除多条重复数据

 
阅读更多
id ColA ColB
1 12345 ABCD
2

12345

ABCD
当出现这种数据的时候,想要删除某条数据,怎么操作呢?
关键是找出重复的其中的一条,
如下:

SELECTmax(id)asid,a.cola,a.colB
FROMajoin
(
SELECTcola,colbFROMaGROUPBYcola,colb
HAVINGCOUNT(*)>1)b
ona.filecode=b.filecodeanda.colb=b.colb
groupbya.col1,a.colB


然后删除即可.

删除数据库中重复数据的几个方法
  数据库的使用过程中由于程序方面的问题有时候会碰到重复数据,重复数据导致了数据库部分设置不能正确设置……
  方法一
declare @max integer,@id integer
  declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1
  open cur_rows
  fetch cur_rows into @id,@max
  while @@fetch_status=0
  begin
  select @max = @max -1
  set rowcount @max
  delete from 表名 where 主字段 = @id
  fetch cur_rows into @id,@max
  end
  close cur_rows
  set rowcount 0
方法二
  有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。

  1、对于第一种重复,比较容易解决,使用
 select distinct * from tableName
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
 select distinct * into #Tmp from tableName
  drop table tableName
  select * into tableName from #Tmp
  drop table #Tmp
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
  假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
  select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
  select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)

分享到:
评论

相关推荐

    MySQL 查询重复内容只显示一条

    标题“MySQL 查询重复内容只显示一条”涉及到的是在MySQL数据库中如何处理重复数据的问题。在数据分析或数据存储过程中,有时我们需要找出并处理重复的记录,只保留一条作为代表。这通常可以通过聚合函数和分组来...

    mysql优化小技巧之去除重复项实现方法分析【百万级数据】

    这个在只有几条重复的时候还可以。要是几千上万条不同数据重复,那咋办。。。 完事呢,咱就考虑了,用having函数查询的时候,原始sql如下: select `name`,count(*) as count from sentence group by `na

    MySQL查询重复数据(删除重复数据保留id最小的一条为唯一数据)

    本文主要探讨如何查询并删除MySQL中的重复数据,同时保留每个重复组中ID最小的一条记录。 首先,我们需要找到表中的重复数据。假设我们有一个名为`brand`的表,其中包含品牌名称`brandName`和其他字段,而我们想要...

    mysql查找删除表中重复数据方法总结

    本文将详细介绍如何在MySQL中查找并删除重复数据。 首先,我们需要识别哪些数据是重复的。假设我们有一个名为`my_table`的表,其中包含`column1`和`column2`等字段,可能存在重复数据。使用`GROUP BY`和`HAVING`...

    Mysql删除重复数据保留最小的id 的解决方法

    在并发环境下,为了防止在删除过程中其他事务插入新的重复数据,可以使用MySQL的锁表功能。例如,可以使用`LOCK TABLES`命令锁定表,确保在删除操作期间不会有任何其他修改。但在实际应用中,应谨慎使用锁,因为它...

    MySQL DELETE 删除语句加锁分析1

    7. 根据主键删除多条记录: 这种情况下,MySQL会锁定所有匹配的主键记录,确保删除操作的原子性。 8. 非唯一索引删除已标记为删除的记录: 如果记录已被标记为删除,但物理上仍然存在,删除操作依然会锁定这些...

    shell脚本操作mysql数据库删除重复的数据

    这包括了连接MySQL服务器的参数设置,使用SQL查询来定位重复数据,以及在循环中执行删除操作。通过这种方式,我们可以自动化解决数据重复的问题,节省手动清理的时间,并且提高了数据的准确性和一致性。然而,在实际...

    MySQL处理重复数据的方法

    在MySQL中,处理重复数据是数据库管理的重要环节。在数据表设计时,有时我们需要确保某些字段的唯一性,以保持数据的准确性和一致性。这里,我们主要探讨如何防止和删除MySQL数据表中的重复数据。 首先,为了防止...

    python工具-excel批量导入mysql (几千万数据半小时可搞定)

    1. **预处理数据**:在导入前清洗和转换数据,删除无效或重复的行,避免无效数据占用资源。 2. **创建索引**:对数据库表的主键或频繁查询的列创建索引,提升查询速度。 3. **优化数据库配置**:增加内存分配,调整...

    MySQL 处理重复数据的方法(防止、删除)

    处理MySQL中的重复数据涉及多个层面,包括在设计阶段通过设置主键和唯一索引来预防,使用`INSERT IGNORE`或`REPLACE INTO`来处理插入时的重复,以及利用`GROUP BY`, `HAVING`, `DISTINCT`等查询构造来查找和删除重复...

    mysql 数据表中查找重复记录

    在MySQL数据库管理中,有时我们需要找出数据表中的重复记录,以确保数据的准确性和一致性。在给定的标题和描述中,我们关注的核心知识点是...以上提供的方法和技巧可以帮助你更有效地查找、分析和解决重复数据的问题。

    mysql大数据量优化

    MySQL数据库在处理大数据量时,性能优化至关重要。以下是一些关键的优化策略和技术: 1. **连接查询与子查询优化**: - **连接查询**(JOIN):当需要从多个表中获取关联数据时,使用连接查询通常比子查询更有效率...

    MySQL处理重复数据的学习笔记

    MySQL 处理重复数据 有些 MySQL 数据表中可能存在重复的记录,...让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。 CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20),

    mysql 批量更新及效率对比

    MySQL 批量更新是指在 MySQL 数据库中批量更新多条记录的操作。这种操作在实际应用中非常常见,例如批量更新用户信息、订单状态等。然而,批量更新的效率问题一直是一个棘手的问题。近期,我们有了大量的 MySQL 批量...

    全球旅游城市数据整理 MySQL数据库可直接导入 可直接运行的SQL语句 共6000+数据.rar

    9. **数据清洗**:导入前的数据可能包含错误或不一致,数据清洗是确保数据质量的关键步骤,包括处理缺失值、异常值和重复数据。 10. **API接口设计**:若需对外提供数据服务,可以设计RESTful API,使得其他应用...

    删除MySQL重复数据的方法

    本篇文章主要介绍如何在MySQL中有效地删除重复数据,通过建立中间表的方式来实现这一目标。 首先,我们来看一下问题的背景。在一个Linux性能采集项目中,由于某种原因,数据库中的数据出现了大量重复,导致入库操作...

Global site tag (gtag.js) - Google Analytics