• **SQL某一表中重复某一字段重复记录查询与处理


    • sql某一表中重复某一字段重复记录查询与处理
    •  
      • 1.查询出重复记录
         
         select 重复记录字段 form  数据表 group by houseno having count(重复记录字段)>1


        2.重复记录只显示一条ID值最小或最大的记录

         select   id,* from   数据表 where houseno (select 重复记录字段 form 数据表 group by 重复记录

        字段 having count(重复记录字段)>1 )


        这样把houseno重复的的ID值全部显示出,那么我们如何只显示一条id最小或最大的记录呢?

        关键是在上面sql的where子句中select 重复记录字段 form 数据表 group by 重复记录字段 having count(

        重复记录字段)>1
        修改为
        select min(id) form 数据表 group by 重复记录字段 having count(重复记录字段)>1

        这样就查询重复记录字段中ID最小值

        那么上面的语句就是

          select   id,* from   数据表 where houseno (select min(id) form 数据表 group by 重复记录字段

        having count(重复记录字段)>1 )


        3.至于对重复记录执行delete update 就非常简单啦

          例如只保留最小id的一条
           
           delete 数据表 where id in (select max(id ) from 数据包 group by 重复记录字段 having count(重

        复记录字段)>1)
         
         
         update 操作不说啦都一样。


        4.group by  字段 having count与distinct的区别

        distct查询显示全部字段值都是一样的唯一,一条记录

         例如
        id     name   sex
        43 111 1
        44 111 1
        45 111 2
        46 222 2
        47 222 2
        48 333 1
        49 333 1

        SELECT distinct
              [name]
              ,[sex]
          FROM [database].[dbo].[a]

        要想实现上面的要去掉 sex字段 改成

        SELECT distinct
              [name]
             
          FROM [database].[dbo].[a]


        但要想取得重复ID最小值不建议用distinct。
        总结:


         对于重复记录关键是查出 :采用group by 字段 having count(字段)>1 
         取得最小id的一条(很关键) :采用min(id)

  • 相关阅读:
    工作的本质是思考
    V8、JSCore、Hermes、QuickJS,hybrid开发JS引擎怎么选
    Aspects框架的源码解读及问题解析
    饿了么移动APP的架构演进
    关键字:客户端架构演进
    以小见大,见微知著——亿万级APP架构演进之路
    理解 Swift:ObjectiveC 的构建管道
    MMKV 组件现在开源了
    进阶:iOS 性能优化系列
    你如果无法度量它,就无法管理它
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/6255485.html
Copyright © 2020-2023  润新知