标签归档:distinct

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 

mssql sqlserver sql关键字distinct多个字段显示并以单个字段去重的方法分享


摘要:
下文通过举例的方式讲述sqlserver中使用distinct关键字对返回多个字段的数据进行去重的方法分享,如下所示:
实验环境:sql server 2008 R2

在sqlserver的sql脚本编写中,distinct关键字的作用就是展示出数据表中不重复的记录,distinct 关键字展示单个不重复字段非常方便,但当我们使用distinct展示多个字段时,如果直接使用distinct关键字,则会出现以两个字段作为唯一值展示出数据,下文将讲述单个关键字重复,但展示出多个字段的方法:

    select [字段1],[字段2],[字段3],[字段4]   
        from 表名 where [序号] in (select min(序号) from 表名 group by [去重字段])