zoukankan      html  css  js  c++  java
  • **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)

  • 相关阅读:
    VBA值列选取与复制,赋值
    Processing的条件式
    VBA之四给程序自动加行号
    自上而下的语法分析
    Processing绘制四边形
    Processing的代码编写流程
    Processing编程语言简介
    follow集的求解
    Processing函数与循环
    在UBUNTU下用ruby求得网卡地址IP地址和用户名
  • 原文地址:https://www.cnblogs.com/kenshinobiy/p/6255485.html
Copyright © 2011-2022 走看看