zoukankan      html  css  js  c++  java
  • SQL 按照多个字段为标准的重复数据处理

    表结构:T1

    id int Unchecked
    name nchar(10) Checked
    value nchar(10) Checked
     

    数据:

    1 a a1
    2 a a1
    3 b b1
    4 b b2
    5 c c1
    6 c c1
    7 c c2

    以name和value为标准

    所有数据查询,重复行只保留ID最小的一条:

    select id,name,value from
    (select no=row_number() over(partition by name,value order by id),* from T_Test) t
    where no=1

    结果:

    1 a a1
    3 b b1
    4 b b2
    5 c c1
    7 c c2

    删除重复行,保留重复行ID最小的一条:

    DELETE FROM T_Test where id in(

    select id from
    (select no=row_number() over(partition by name,value order by id),* from T_Test) t
    where no>1

    )

    结果:ID为2和6的行被删除。

    查询重复数据,保留ID最小项:

    SELECT * FROM T_Test t1
    WHERE t1.name IN (SELECT NAME FROM T_Test GROUP BY NAME,value HAVING COUNT(*) >1)
    and t1.id in(
    select min(id) FROM T_Test GROUP BY NAME,value HAVING COUNT(*) >1)

    结果:

    1 a a1
    5 c c1

  • 相关阅读:
    字符串匹配的KMP算法(转)
    二分查找谜题
    快排的优化--说说尾递归
    ZR提高失恋测4
    CF1209
    ZR普转提2
    ZR提高失恋测3
    ZR提高失恋测2(9.7)
    ZR9.8普转提
    CF1214
  • 原文地址:https://www.cnblogs.com/Andy-Li/p/6556390.html
Copyright © 2011-2022 走看看