天天看點

MSSQL sql server 2005/2008 row_number()函數應用之–删除表中重複記錄,隻保留一條不重複資料

原文: MSSQL sql server 2005/2008 row_number()函數應用之–删除表中重複記錄,隻保留一條不重複資料 轉自: http://www.maomao365.com/?p=4942

下文主要講述:重複資料隻擷取一條的方法

row_number函數在資料庫中的功能是為每一行 按照一定的規則生成一個編号,

我們常常利用這一屬性,對表進行分頁操作,下文我們将講述采用 row_number函數删除表中重複資料行

/*建表*/
create table A(keyId int,info varchar(20))
go 
/*生成資料*/
insert into A(keyId,info)values
(1,'a'),(2,'b'),(3,'C'),(4,'d'),(5,'e'),
(1,'a'),(21,'b1'),(31,'C1'),(4,'d'),(51,'e'),
(1,'a'),(6,'b1'),(7,'C1'),(4,'d000'),(10,'e')
go


/*删除 keyId重複資料 中的另外幾條*/
delete [A2] from 
(select row_number() over (Partition By keyId order by keyId) as keyId2,* from A ) as [A2]
where [A2].keyId2  >1 
 

/*
/*删除 所有列都重複資料 中的另外幾條*/
delete [A2] from 
(select row_number() over (Partition By keyId,info order by keyId) as keyId2,* from A ) as [A2]
where [A2].keyId2  >1 
 */

/*展示删除後的資料*/

select * from A 
go

truncate table A 
drop table A 
go