最近做一个数据库的数据导入功能,发现联合主键约束导致不能导入,原因是源表中有重复数据,但是源表中又没有主键,很是麻烦。经过努力终于解决了,现在就来和大家分享一下,有更好的办法的可以相互交流。
有重复数据主要有一下几种情况:
1.存在两条完全相同的纪录
这是最简单的一种情况,用关键字distinct就可以去掉
example: select distinct * from table(表名) where (条件)
2.存在部分字段相同的纪录(有主键ID即唯一键)
如果是这种情况的话用distinct是过滤不了的,这就要用到主键ID的唯一性特点及group by分组
example:
select * from table where ID in (select max(ID) from table group by [去除重复的字段名列表,....])
3.没有唯一键ID
这种情况我觉得最复杂,目前我只会一种方法,有那位知道其他方法的可以留言,交流一下:
example:
select IDentity(int1,1) as ID,* into newtable(临时表) from table
select * from newtable where ID in (select max(ID) from newtable group by [去除重复的字段名列表,....])
drop table newtable
总结以上是内存溢出为你收集整理的sqlserver去除重复列[行]全部内容,希望文章能够帮你解决sqlserver去除重复列[行]所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)