ROW_NUMER OVER(PARTITION BY col1,col2 ORDER BY col3) rn
该函数会对行进行分组和排序。(限 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 也相同的,就只能通过【游标】来实现了。
使用 ROW_NUMBER OVER() 删除相同记录,布布扣,bubuko.com
原文:http://blog.csdn.net/skyandcode/article/details/21260799