上一篇:SQL Server日志清除的两种方法 >>
SQL Server中删除重复数据的几个方法
方法一
| declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount @max delete from 表名 where 主字段 = @id fetch cur_rows into @id,@max end close cur_rows set rowcount 0 |
方法二
有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
| select distinct * from tableName |
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
| select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp |
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
| select identity(int,1,1) as autoID, * into #Tmp from tableName select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID select * from #Tmp where autoID in(select autoID from #tmp2) |
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
下一篇:SQL Server存储过程编写和优化措施 >>
相关文章:
- · Web设计里的软件工程思想
- · ASP.Net安装简明手册
- · 利用Directshow开发源Filter
- · DShow中实现抓图的几种方法
- · 渲染状态管理
- · 论游戏中的搜索问题(初级篇)
- · 如何在3D场景中加入Fog
- · 深入RPG游戏制作—图形篇
- · 角色扮演游戏的升级系统研究
- · 游戏外挂分析
- · 特效天地——水波
- · 隨筆]遊戲程式設計初學者…
- · 特效天地——位图卷轴
- · 未来游戏发展趋向
- · 纹理映射:JeffMolofee(…
- · 向3D进军:JeffMolofee(…
- · 看骂国产游戏、骂国内制…
- · 五子棋的核心算法
- · 拼图游戏的算法
- · 上楼梯算法的java实现
- · 杨辉三角形
- · 水仙花数
- · 刘徽《九章算术》中的勾股数
- · 图像分割中阈值的自动选取的研究及其算法实现
- · 【C++/OOP】(侯捷著)
- · 《Borland传奇》序-李维
- · 工作不努力,罚你去印度…
- · 《多收了三五斗》大学毕…
- · 停止思考是一种堕落--…
- · 夜幕下的程序员
- · 《各大IT公司薪金大曝光…
- · 我国加速城市有线电视数字化进程
- · 石家庄市政府“网站集群”全面升级
- · 农垦系统全面信息化启动
- · 推广“绿色电子”天津率先行动
- · 江西省将实行信息化工程监理体制
- · 美政府电脑系统遭少年黑客攻击
- · 交通运输信息化本周首次亮相亚洲
