mssql sqlserver 使用sql脚本查询重复行数据的方法分享


摘要:
下文讲述使用sql脚本查询重复行数据的三种方法分享,如下所示:
实验环境:sql server 2008 R2



一、场景1:数据行中数据完全相同

  /*
   数据表中,存在行之间数据完全相同,展示出不重复数据的方法,
   可以直接使用distinct关键字,显示出表数据
  */
   select distinct * from 数据表 
   where [数据检索条件]


二、场景2:数据行中部分字段数据相同,数据表存在主键keyId

  
  /*
   针对存在部分重复字段,我们可以对重复字段使用group by关键字进行去重, 并获取去重后记录所对应的keyId ,
   后根据主键keyId关联出相应的数据
  */
   select * from [数据表]  
     where  keyId  in (
            select min(keyId) from  [数据表]   
                   group by  [重复字段1], [重复字段2], [重复字段3], ...

       )


三、场景3:数据行中部分字段数据相同,数据表不存在主键keyId

  
  /*
  针对此类无主见列的数据,我们需虚拟一张带主键的数据表,然后再采用场景二的操作方法,如下例子所示 
  */

    select identity(1,1) as keyId,*  into #数据库表_tmp from [数据表] 

   select * from #数据库表_tmp  
     where  keyId  in (
            select min(keyId) from #数据库表_tmp 
                   group by  [重复字段1], [重复字段2], [重复字段3], ...

       )

    truncate table #数据库表_tmp
    drop       table #数据库表_tmp