使用 ROW_NUMBER OVER() 删除相同记录
2014-03-15 00:29
330 查看
ROW_NUMER OVER(PARTITION BY col1,col2 ORDER BY col3) rn
该函数会对行进行分组和排序。(限 sql server 2005 及以上版本)
以下就使用该函数删除表的相同记录:
这里的相同是指除了 id 不同其它字段完全相同的。
如果要删除连 id 也相同的,就只能通过【游标】来实现了。
该函数会对行进行分组和排序。(限 sql server 2005 及以上版本)
以下就使用该函数删除表的相同记录:
--测试 DECLARE @t TABLE ( id INT, sname VARCHAR(30), sage INT) INSERT INTO @t SELECT 1,'sky1',21 UNION ALL SELECT 2,'sky1',21 UNION ALL SELECT 3,'sky1',21 UNION ALL SELECT 4,'sky2',23 UNION ALL SELECT 5,'sky2',23 UNION ALL SELECT 6,'sky3',24 DELETE FROM t1 FROM @t t1 JOIN (SELECT *, ROW_NUMBER() OVER(PARTITION BY sname,sage ORDER BY id) rn FROM @t) t2 ON t1.id = t2.id WHERE t2.rn != 1 SELECT * FROM @t
这里的相同是指除了 id 不同其它字段完全相同的。
如果要删除连 id 也相同的,就只能通过【游标】来实现了。
相关文章推荐
- 自己做的跟别人的对比一下
- ThreadLocal
- 实现交叉编译gdb和gdbserver(gdb-7.6)
- 第二周作业
- PHP 冒泡算法示例
- 勘探院读取监控数据代码设计
- Oracle 11g R2 RAC Windows 2008安装笔记
- linux命令
- CareerCup How would you implement a secondary sorting
- INI文件的读取
- Building the Testing Pipeline
- 兼容IE与firefox火狐的回车事件(js与jquery)
- IOS 中的CoreImage框架(framework)
- Build.VERSION类
- 继承关系的类初始化和实例化的顺序
- 十大最优秀的Web网站性能测试软件工具
- 在VS2012中调用动态链接库
- c语言学习笔记总结
- CSS垂直居中对齐
- SQL Server 2008 权限管理