服务器之家:专注于服务器技术及软件下载分享
分类导航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|数据库技术|

服务器之家 - 数据库 - Sql Server - 删除重复记录,并且剩下一条

删除重复记录,并且剩下一条

2019-11-06 13:06mssql教程网 Sql Server

所谓的重复记录就是某列数据有重复的,但是在实际的过程中,有可能您的需求是一列有重复,也可能两列有重复..根据实际情况,所得到的重复记录是有所不同的

我们可以通过下述方法删除重复记录: 
例:表名:dbo.品种描述$,字段包括:ID_PK,品种名称,性状标准编号,代码,首先创建一个和原表结构一样的表: 

复制代码代码如下:


select * into tmpA from dbo.品种描述$ where 1=2--创建完毕 
在数据表中,品种名称,性状标准编号这两个字段不能有重复值,执行下述脚本: 

declare @VarietyName nvarchar(255), 
@StdCharCode nvarchar(255), 
@iCount int 
set @iCount=0; 
declare insert_distinct_cursor cursor for 
select 品种名称,性状标准编号 from dbo.品种描述$ group by 品种名称,性状标准编号 
open insert_distinct_cursor 
FETCH NEXT FROM insert_distinct_cursor INTO @VarietyName,@StdCharCode 
WHILE (@@fetch_status <> -1) 
BEGIN 
IF (@@fetch_status <> -2) 
BEGIN 
insert into dbo.tmpA (品种名称,性状标准编号,代码) select top 1 品种名称,性状标准编号,代码 from dbo.品种描述$ where 品种名称=@VarietyName and 性状标准编号=@StdCharCode; 
set @iCount=@iCount+1; 
END 
FETCH NEXT FROM insert_distinct_cursor INTO @VarietyName,@StdCharCode 
END 

CLOSE insert_distinct_cursor 
DEALLOCATE insert_distinct_cursor 
print @iCount 

延伸 · 阅读

精彩推荐