精华内容
下载资源
问答
  • 根据autoID删除临时表#tmp中的重复数据,只保留每组重复数据中的第一条
  • sqlServer删除重复数据

    2013-08-12 16:40:07
    有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
  • SQL Server删除重复数据的几个方法SQL Server删除重复数据的几个方法
  • 非常感谢此博主, 为了防止此链接丢失, 特写此文章进行记录,以便后面使用 目录 1. 数据库表 2. 查看是否存在重复数据 ...4. 删除重复数据 ------ 无有唯一列 (使用ROW_NUMBER()函数删除重复记录...

    以下内容抄自 : https://www.cnblogs.com/springsnow/p/10334469.html

    非常感谢此博主,  为了防止此链接丢失, 特写此文章进行记录,以便后面使用

     

    目录

    1. 数据库表

    2. 查看是否存在重复数据

    3. 删除重复数据 ------ 有唯一列

    4. 删除重复数据 ------ 无有唯一列 (使用ROW_NUMBER()函数删除重复记录)


    1. 数据库表 

     

          ( 表中 ID 唯一)                                           (表中 ID 不唯一)

     

    2. 查看是否存在重复数据

    select Name from Student group by  Name having count(Name) > 1

     

    3. 删除重复数据 ------ 有唯一列

    通过唯一列最大或最小方式删除重复记录.
    
    检查表中是否有主键或者唯一值的列, 当前可以数据看到ID是唯一的, 可以通过Name分组排除掉ID最大或最小的行
    
    delete from Student
      where Name in( select Name from Student group by  Name having count(Name) > 1) and 
     ID not in(select  max(ID) from Student group by  Name having count(Name) > 1 )

    4. 删除重复数据 ------ 无有唯一列 (使用ROW_NUMBER()函数删除重复记录)

    如果表中没有唯一值的列,可以通过 Row_Number() 函数来删除重复数据, 重复执行插入脚本
    
    Delete T From
     (Select Row_Number() Over(Partition By [Name] order By [ID]) As RowNumber,* From Student)T
     Where T.RowNumber > 1
    
    
    小知识点
    
    语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
             表示根据COLUMN分组,在分组内部根据 COLUMN排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
             函数“Row_Number”必须有 OVER 子句。OVER 子句必须有包含 ORDER BY
             Row_Number() Over(Partition By [Name] order By [ID])  表示已name列分组,在每组内以ID列进行升序排序,每组内返回一个唯一的序号

     

    展开全文
  • Sqlserver删除重复数据的方法

    千次阅读 2018-05-12 07:40:36
    如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除 select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp 2、这类...

    方法一
    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)

    展开全文
  • sqlserver删除表中的重复数据

    千次阅读 2019-12-31 15:20:19
    如果表中没有唯一值的列,可以通过 来删除重复数据 重复执行插入脚本,查看表数据,表中没有唯一列值 Delete T From ( Select Row_Number ( ) Over ( Partition By [ Name ] order By [ ID ]...
    笔记:
    

    首先创建表:
    create table Student(
    ID varchar(10) not null,
    Name varchar(10) not null,
    );

    insert into Student values(‘1’, ‘zhangs’);
    insert into Student values(‘2’, ‘zhangs’);
    insert into Student values(‘3’, ‘lisi’);
    insert into Student values(‘4’, ‘lisi’);
    insert into Student values(‘5’, ‘wangwu’);
    在这里插入图片描述
    模拟数据库中的重复书数据

    1、查询表中Name 重复的数据

    select Name from Student group by  Name having count(Name) > 1
    

    在这里插入图片描述
    思路:根据name分组查询,如果分组的数量大于1,就说明重复了。

    2、有唯一列,通过唯一列最大或最小方式删除重复记录

    检查表中是否有主键或者唯一值的列,当前可以数据看到ID是唯一的,可以通过Name分组排除掉ID最大或最小的行

    delete from Student
      where Name in( select Name from Student group by  Name having count(Name) > 1) and 
     ID not in(select  max(ID) from Student group by  Name having count(Name) > 1 )
    

    3、无唯一列使用ROW_NUMBER()函数删除重复记录

    如果表中没有唯一值的列,可以通过 来删除重复数据
    重复执行插入脚本,查看表数据,表中没有唯一列值
    

    在这里插入图片描述

    Delete T From
     (Select Row_Number() Over(Partition By [Name] order By [ID]) As RowNumber,* From Student)T
     Where T.RowNumber > 1
    

    执行删除脚本后查询表数据
    在这里插入图片描述
    小知识点:

    语法:ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)
    表示根据COLUMN分组,在分组内部根据 COLUMN排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)
    
    函数“Row_Number”必须有 OVER 子句。OVER 子句必须有包含 ORDER BY
    Row_Number() Over(Partition By [Name] order By [ID])  表示已name列分组,在每组内以ID列进行升序排序,每组内返回一个唯一的序号
    

    内容是转载的,学到了记下来;

    展开全文
  • 删除SQL SERVER重复数据的方法 方法一 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...

    删除SQL SERVER中重复数据的方法

    方法一

    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子句中省去此列)
    //发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
    
    展开全文
  • SqlServer怎么删除重复数据

    千次阅读 2017-05-26 14:14:56
    工作中,我们经常会碰到各种各样奇葩的数据库表设计,碰到后当然免不了鄙视或感叹坑爹云云,但是茶余饭后酒过三巡,还是得蛋疼的接着去处理问题,今天就来蛋疼下SqlServer怎么删除重复数据。 栗子如下: =========...
  • 1.两条数据完全一模一样(一定保证表中的数据是完全一模一样,不然会误删数据) 利用 distinct 关键字过滤重复的行,将查询的结果写入临时表` select distinct * into #temp from mytable 备份原表 select * into ...
  • 背景:表Per_CheckIn,主要字段:pid--身份证号,checktime-刷身份证时间,由于误操作,导致了重复记录产生,现需将pid和checktime一样的记录删除。具体表结构:CREATE TABLE [Per_CheckIn]( [id] [INT] IDENTITY(1...
  • sqlserver去除重复数据查询重复数据删除重复数据只保留一条 查询重复数据 select * from SHSJ0101 where XSDM in (select XSDM from SHSJ0101 where SHSJPCDM = 'b1f492d67da743dc838e214195a2a524' group by XSDM...
  • DELETE FROM Bus_TerminalMessage_Keywords WHERE Content IN (select Content from Bus_TerminalMessage_Keywords ...两个条件取交集就能删除重复数据了 转载于:https://www.cnblogs.com/fjzhang/p/8390876.html
  • 方法一 代码如下: 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 ...
  • SQL SERVER 查询、删除重复数据

    千次阅读 2019-03-31 23:06:14
    查询删除重复数据,只保留一条记录: 1.根据单字段,查询表中该字段重复出现记录: SELECT * FROM Table WHERE Parameter IN (SELECT Parameter FROM Table GROUP BY Parameter HAVING COUNT(Parameter ) > 1) ...
  • 还是先上代码吧 ,可以先看 SQL语句去掉重复记录,获取重复记录 代码如下: ALTER procedure [dbo].[PROC_ITEMMASTER_GETUNIQUE] @PAGEINDEX INT,@uid int,@itemnumber varchar(50) AS begin tran –开始事务 drop ...
  • 在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除重复的呢 1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from ...
  • sqlserver 去除重复数据

    2019-10-28 17:01:38
    DELETE FROM K3_Material WHERE ID NOT in (SELECT MAX(ID) FROM K3_Material GROUP BY FItemID)
  • Sql server 数据库查询重复数据删除重复数据保留第一条数据 演示内容数据 数据库表 create table register( Id int primary key identity, [UserName] nvarchar(255), MobilePhone nvarchar(255), ...
  • select * from lcsy_SettingPrivilege where SellerId=7 SELECT MAX(pid) as '最大标识ID',SellerId,PType,status,mtype,modName,picture,minipicture FROM lcsy_SettingPrivilege where SellerId=7 group by ...
  • 删除部分字段有重复数据,保留其中一条记录数据 2,效果图: 处理前: 处理后: 3,SQL delete FROM Atable WHERE EXISTS ( SELECT id FROM( SELECT name, code FROM Atable GROUP BY name, code HAVING COUNT...
  • sqlserver查询去掉重复数据的实现

    千次阅读 2021-01-17 04:54:30
    说明:只要数据表“列名”数据相同,则说明是两条重复数据(ID为数据表的主键自动增长)。推荐使用方法一-- 方法一select * from 表名 A where not exists(select 1 from 表名 where 列名=A.列名 and ID补充:SQL ...
  • SQLserver Distinct去重复数据

    万次阅读 2019-03-09 16:13:29
    我们在使用Server 语句查询数据库的时候有时需要查询出很多重复的值,但是我们又不希望它出现重复数据给我们那么这个时候就可以使用Distinct关键字来去重复这个操作 如下图: 图中查询所有表部门的数据 , 列表里...
  • select * from  ( select a.* from VI_CIC_PolicyCover a,VI_...创建临时表,取重复数据其中一半的id select * from #temp 删除: delete from VI_CIC_PolicyCover where id in ( select id from #temp )
  • sqlserver查询去掉重复数据

    千次阅读 2020-08-20 11:42:43
    说明:只要数据表“列名”数据相同,则说明是两条重复数据(ID为数据表的主键自动增长)。推荐使用方法一。 -- 方法一 select * from 表名 A where not exists(select 1 from 表名 where 列名=A.列名 and ID<...
  • SQL Server数据库操作中,有时对于表中的结果集,满足一定规则我们则认为是重复数据,而这些重复数据需要删除。如何删除呢?本文我们通过一个例子来加以说明。 例子如下: 如下只要companyName,invoiceNumber,...
  • 项目中需要根据条件获取一些数据,但是如果条件相同的情况下,要去掉... --Year和MCode一样的前提下的重复数据,只要Cu值最大的那条 select * from tbMonitorResults t where 1=1 and Year between 2016 and 2...
  • 利用distinct 关键字过滤重复的行,将查询的结果写入临时表 select distinct * into #temp from mytable 删除表 delete mytable 将临时表插入到表中 insert mytable select *from #temp 释放临时...
  • SQL Server获取重复数据的方法

    万次阅读 2018-08-17 08:42:13
    一 获取重复的数据的值 select user_name from users group by user_name having(count(1)&gt;1) 二 获取重复数据的记录 select * from users where user_name ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 118,840
精华内容 47,536
关键字:

sqlserver删除重复数据