如何删除一个表中某列是重复的数据?
2006-05-15 22:02
363 查看
比如表T:
id name
1 aa
2 bb
3 cc
4 aa
5 aa
6 cc
如何变成(保留最大的id或者最小的id):
id name
1 aa
2 bb
3 cc
1.使用distinct关键字,导出无重复的数据到一个临时表,删除原表,再从临时表导入数据:
select distinct name into #temp from T
drop table T
select identity(int,1,1) as id, * into T from #temp
drop table #temp
如果原表的id和其他表没有联系并只有id,name列时,用这种方法可以,当然最好原表数据不要太多。
2.不用distinct关键字,导出无重复的数据到一个临时表,删除原表,再从临时表导入数据:
select name into #temp from T where id in (select max(id) from aa group by name)
drop table T
select identity(int,1,1) as id, * into T from #temp
drop table #temp
3.使用delete语句,把name相同的类中id最大(或者最小)的数据删掉,循环执行,直到受影响的行数是0:
delete from T where id in (select max(id) from T group by name having count(*)>1)
4.还是delete语句,把除了name相同的类中最大的id(或者最小)的数据删掉,执行一次即可:
delete from T where id not in (select max(id) from T group by name )
感觉当然是第4种方法比较好了,不知道有没有其他的好方法了。
id name
1 aa
2 bb
3 cc
4 aa
5 aa
6 cc
如何变成(保留最大的id或者最小的id):
id name
1 aa
2 bb
3 cc
1.使用distinct关键字,导出无重复的数据到一个临时表,删除原表,再从临时表导入数据:
select distinct name into #temp from T
drop table T
select identity(int,1,1) as id, * into T from #temp
drop table #temp
如果原表的id和其他表没有联系并只有id,name列时,用这种方法可以,当然最好原表数据不要太多。
2.不用distinct关键字,导出无重复的数据到一个临时表,删除原表,再从临时表导入数据:
select name into #temp from T where id in (select max(id) from aa group by name)
drop table T
select identity(int,1,1) as id, * into T from #temp
drop table #temp
3.使用delete语句,把name相同的类中id最大(或者最小)的数据删掉,循环执行,直到受影响的行数是0:
delete from T where id in (select max(id) from T group by name having count(*)>1)
4.还是delete语句,把除了name相同的类中最大的id(或者最小)的数据删掉,执行一次即可:
delete from T where id not in (select max(id) from T group by name )
感觉当然是第4种方法比较好了,不知道有没有其他的好方法了。
相关文章推荐
- 如何删除数据库一个表中某列是重复的数据?
- oracle如何对表同一个表重复的数据进行删除
- oracle如何对表同一个表重复的数据进行删除 (2)
- oracle如何对表同一个表重复的数据进行删除
- sqlserver中如何删除没有主键的重复数据。
- 如何高效删除Oracle数据库中的重复数据
- sqlserver 2008R2 删除一个表中的重复数据
- 有一个拥有1亿条数据的表,只需要保留其中的5条,其他删除,如何做?
- 如何高效删除Oracle数据库中的重复数据
- Oracle如何删除重复数据
- db2如何删除完全一样的重复数据
- 在ORACLE中如何删除表中的重复数据
- 转的 Oracle 中如何删除重复数据
- 如何删除数据库表的重复数据
- oracle中如何删除重复,冗余数据
- SQL如何删除重复的数据行
- 如何删除mysql数据库的重复数据
- sql 2005 中如何自动生成不重复的,长度相同字符串作为一个数据表的id
- 如何删除数据表中的重复数据(各种数据库)
- 在Oracle中如何删除表中设计重复数据