zoukankan      html  css  js  c++  java
  • SQL语句去除重复项

    SQL语句去除重复字段项

    直接上代码

    --测试数据库
    Create table Test(
    Id int primary key identity(1,1) not null,
    name varchar(100) null,
    age varchar(100) null
    )
    GO
    --测试数据
    insert into Test values('aa',18)
    insert into Test values('aa',19)
    insert into Test values('aa',20)
    insert into Test values('bb',25)
    insert into Test values('bb',20)
    insert into Test values('cc',22)
    
    --解析
    
    --分组
    SELECT name FROM Test
    GROUP BY name
    --出现次数
    SELECT name,COUNT(name) AS 出现次数 FROM Test
    GROUP BY name
    
    --有重复的数据
    SELECT NAME,COUNT(NAME) AS 重复数量 FROM TEST
    GROUP BY name
    HAVING COUNT(name)>1
    
    --找出重复项中ID 最大的一个
    SELECT NAME,COUNT(NAME) AS 重复数量,MAX(ID)AS 最大的ID FROM TEST
    GROUP BY name
    HAVING COUNT(name)>1
    
    --找出重复项中ID 最小的一个
    SELECT NAME,COUNT(NAME) AS 重复数量,MIN(ID)AS 最小的ID FROM TEST
    GROUP BY name
    HAVING COUNT(name)>1
    
    
    --找出整个表中的重复数据;
    SELECT * FROM TEST
    WHERE name IN(
    SELECT name FROM TEST
    GROUP BY name
    HAVING COUNT(name)>1
    )
    
    --删除所有 重复出现过的 项
     DELETE FROM TEST
     WHERE ID IN(
        SELECT ID FROM TEST WHERE name IN
        (
            SELECT name FROM TEST 
            GROUP BY name
            HAVING COUNT(name)>1
        )
     )
    
    --删除重复项,保留重复项中的一个(通常用的是这个)
    
    --第一步:找出重复项
    
    --第二步:找出重复项中的最大id
    
    --第三步: 删除 重复项中ID NOT IN (第二步)
    
       DELETE FROM TEST
       WHERE ID IN
       (
       SELECT ID FROM TEST WHERE name IN(SELECT name FROM TEST GROUP BY name HAVING COUNT(name)>1)
       AND
       ID NOT IN(SELECT MAX(ID) FROM TEST GROUP BY name HAVING COUNT(name)>1)
       )

      完美。

  • 相关阅读:
    EasyUI 常用图标
    DataGridView滚动条联动
    FTP下载工具
    C# 解析带命名空间的xml
    1.基于3.x版本vue脚手架创建新项目
    js处理异步的几种方式
    JS字符串常用方法
    git(开源的分布式版本控制系统)
    js检查数据类型的方法
    数组的常用方法
  • 原文地址:https://www.cnblogs.com/mc67/p/4838013.html
Copyright © 2011-2022 走看看