zoukankan      html  css  js  c++  java
  • TSQL 筛选删除重复记录并保留一条

    以下为,实现此操作的通用T-sql模版:

    /*delete from a FROM       --删除表a (a 是引用的需要删除的表)
    (
     select ROW_NUMBER() over    -- ROW_NUMBER() over 是一个整体  产生一个从一开始的自增列
     (               
      partition by 重复列1, 重复列2, 重复列3   --,重复列n    partition by 跟group by 大同小异  但是并不是聚合函数 是显示所有的记录,包括重复的             
      order by 重复列1, 重复列2, 重复列3   --,重复列n       order by 跟 ROW_NUMBER() over 连用
     ) RowNumber   --RowNumber 给括号里 ROW_NUMBER 返回结果列 的一个别名
     from 表名) a  --a  结果表的别名
    where a.RowNumber > 1  -- 表a 里的RowNumber的值大于1(记录在一条以上的标识重复)*/

    接下来是实现此操作的一段事例代码:

    CREATE DATABASE Test

    go

    USE Test

    go

    CREATE TABLE #Test (  id UNIQUEIDENTIFIER,  NAME NVARCHAR(20),  pwd NVARCHAR(20) )

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'zhangsan','zhangsan')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'zhangsan','zhangsan1')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'zhangsan','zhangsan')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'zhangsan','zhangsan')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'lisi','lisi')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'lisi','lisi')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'lisi','lisi1')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'lisi','lisi')

    INSERT INTO #Test( id, NAME, pwd )VALUES (NEWID(),'lisi','lisi')

    SELECT * FROM #Test

    --查询出排除重复记录,保留一条后的结果,以便加以对比测试

    SELECT * from

        (select ROW_NUMBER() over

                   (

                        partition by  name, pwd

                 order by name, pwd

                   ) RowNumber,* from #Test

          ) a where a.RowNumber > 1

    --执行删除操作(删除重复记录,保留一条)

    delete from a  from

        (select ROW_NUMBER() over

                   (

                        partition by  name, pwd

                order by name, pwd

                  ) RowNumber from #Tes

          ) a where a.RowNumber > 1

  • 相关阅读:
    【设计模式】- 责任链篇
    【工具】
    【日常摘要】- 生成随机的姓名或手机号篇
    排序算法的时空复杂度、稳定性分析
    链表插入排序、链表归并排序
    图的存储结构
    二叉平衡树的插入和删除操作
    二叉排序树的查找、插入和删除
    哈希表
    堆的插入、删除和建立操作,堆排序
  • 原文地址:https://www.cnblogs.com/Shaina/p/2769800.html
Copyright © 2011-2022 走看看