zoukankan      html  css  js  c++  java
  • SQL删除重复的记录(只保留一条)

    首先新建表:

    --创建示例表
    CREATE TABLE t
    (
        id INT IDENTITY(1,1) PRIMARY KEY,
        a VARCHAR(10),
        b VARCHAR(10)
    )
    --插入数据
    INSERT INTO t 
    SELECT 'aa','bb' UNION ALL
    SELECT 'a1','bgb' UNION ALL
    SELECT 'aa','bb' UNION ALL
    SELECT 'a2','bb' UNION ALL
    SELECT 'aa3','beeb' UNION ALL
    SELECT 'aa','bb' UNION ALL
    SELECT 'a2','bb' 

    查询重复数据:可看到重复数据为:[a2,bb] 重复2次,[aa,bb] 重复3次

    --查询重复数据
    SELECT a,b,COUNT(*) count FROM t GROUP BY a,b

    删除重复数据 (重复数据只保留1条):

    方法一

    --首先通过子查询取出 id 最小的不重复行,然后通过 NOT IN 删除重复数据
    DELETE FROM t WHERE id NOT IN(
    SELECT MIN(id) FROM t GROUP BY a,b
    )

    方法二

    --首先通过 PARTITION BY 对 a,b 列进行分区排序并生成序号列,然后将序号大于 1 的行删除,即删除了重复数据
    DELETE a 
    FROM (SELECT ROW_NUMBER() OVER (PARTITION BY a,b ORDER BY ID) num FROM t) a 
    WHERE num>1

  • 相关阅读:
    js 多物体运动
    js运动 淡入淡出
    js运动 分享到
    正则 重复项最多得子项
    jq 拖拽
    jq 弹出窗口
    jq 选项卡
    jq 写法
    Codeforces 185A Plant( 递推关系 + 矩阵快速幂 )
    HDU 2604 Queuing( 递推关系 + 矩阵快速幂 )
  • 原文地址:https://www.cnblogs.com/wynn0123/p/4628328.html
Copyright © 2011-2022 走看看