位置: 编程技术 - 正文
一. 删除完全重复的记录
完全重复的数据,通常是由于没有设置主键/唯一键约束导致的。测试数据:
(1) 借助临时表
利用DISTINCT得到单条记录,删除源数据,然后导回不重复记录。如果表不大的话,可以把所有记录导出一次,然后truncate表后再导回,这样可以避免delete的日志操作。(2) 使用ROW_NUMBER
如果多个表有完全重复的行,可以考虑通过UNION将多个表联合,插到一个新的同结构的表,SQL Server会帮助去掉表和表之间的重复行。
二. 删除部分重复的记录
部分列重复的数据,通常表上是有主键的,可能是程序逻辑造成了多行数据列值的重复。测试数据:
(1) 唯一索引
唯一索引有个忽略重复建的选项,在创建主键约束/唯一键约束时都可以使用这个索引选项。(2) 借助主键/唯一键来删除通常会选择主键/唯一键的最大/最小值保留,其他行删除。以下只保留重复记录中c1最小的行。--或者 如果要保留重复记录中的第N行,可以参考.取分组中的某几行。(3) ROW_NUMBER和删除完全重复记录的写法基本一样。SQL删除重复数据只保留一条 (下面的代码,很多网友反馈错误,大家多测试)用SQL语句,删除掉重复项只保留一条在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断 select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录 delete from people where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1) and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1) 3、查找表中多余的重复记录(多个字段) select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) 4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录 delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录 select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1) 6.消除一个字段的左边的第一位:update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'7.消除一个字段的右边的第一位:update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'8.假删除表中多余的重复记录(多个字段),不包含rowid最小的记录 update vitae set ispass=-1where peopleId in (select peopleId from vitae group by peopleId
推荐整理分享sql删除重复数据的详细方法(sql删除重复数据只保留一条日期最大的),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:sql删除重复数据语句,sql删除重复数据语句,sql删除重复数据保留一条最近日期的数据,sql删除重复数据保留其中一条,sql删除重复数据并保留某个值最大的,sql删除重复数据保留其中一条,sql删除重复数据语句,sql删除重复数据保留其中一条,内容如对您有帮助,希望把文章链接给更多的朋友!
SQL Server中删除重复数据的几个方法 方法一declare@maxinteger,@idintegerdeclarecur_rowscursorlocalforselect主字段,count(*)from表名groupby主字段havingcount(*)1opencur_rowsfetchcur_rowsinto@id,@maxwhile@@fetch_status=0beginselec
sql 语句练习与答案 1学生表studentS#学号,sname姓名,difdate日期,班级grade2课程表coursec#课程号,名字cname3成绩单scores#学号c#课程号成绩score--1统计每个班级有多少人selectgrade,
SQLServer 报错误(服务没有及时响应或控制请求)的解决方法 今天启动SQLServer时报错误错误如下所示:发生错误-(服务没有及时响应或控制请求。),此时正在MSSQLServer服务上执行该服务操作。我立即
友情链接: 武汉网站建设