当前位置: 首页 > 图文教程 > 数据库 > MSSQL > 删除重复记录,并且剩下一条

MSSQL
使用SQL Server索引视图来提高性能
步骤指南:移植SQL 2000 DTS到SSIS
怎样使你的SQL运行得更加灵活和高效
优化SQL Server数据库服务器内存配置
SQL SERVER优化建议
请注意那些容易被忽略的SQL注入技巧
SQL Server 2005密码安全追踪与存储
sql2000下 分页存储过程
SQL Server数据库安全管理经验谈
测试SQL Server的业务规则链接方法
SQL Server的有效安装
SQL Server灾难恢复:重创历史性数据
SQL Server2005发布元年 微软正身企业级应用
MS SQL "1813"错误产生的原因及解决
收藏几段SQL Server语句和存储过程
SQL Server 2005中的备份和恢复增强
如何用SQL Server查询累计值
浅析如何掌握SQL Server的锁机制
步骤指南:测试MSSQL有没有特洛伊木马
手工卸载SQL Server 2000数据库

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 63 ::
收藏到网摘: n/a

所谓的重复记录就是某列数据有重复的,但是在实际的过程中,有可能您的需求是一列有重复,也可能两列有重复..根据实际情况,所得到的重复记录是有所不同的 我们可以通过下述方法删除重复记录:
例:表名: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