博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
T-SQL 筛选删除重复记录并保留一条
阅读量:4508 次
发布时间:2019-06-08

本文共 1598 字,大约阅读时间需要 5 分钟。

以下为,实现此操作的通用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/archive/2012/11/14/2769800.html

你可能感兴趣的文章
VIM-->基础操作汇总
查看>>
oracle cursor
查看>>
Response.StatusCode的HTTP状态代码列表
查看>>
win7下maven安装和配置
查看>>
C# 多线程编程 ThreadStart ParameterizedThreadStart
查看>>
Android Camera Parameters 方法出错,求教
查看>>
一个仿照系统UIAlertView写的提示框
查看>>
Genymotion集成到Eclipse
查看>>
代码简洁之四 统一抽象层次
查看>>
IOS 缩放图片常用方法
查看>>
软件工程课
查看>>
Pycharm-连接服务器
查看>>
[Leetcode] The Skyline Problem
查看>>
okhttp异步请求流程和源码分析
查看>>
【集合框架】JDK1.8源码分析之Comparable && Comparator(九)
查看>>
Flutter之内置动画(转)
查看>>
uni-app中onLoad不起作用
查看>>
多线程概述
查看>>
Linux_ubuntu命令-用户、权限管理
查看>>
Knowladge_网站学习_RSS 学习
查看>>