首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求sql语句,去掉id号小的重复记录,该怎么处理

2012-01-16 
求sql语句,去掉id号小的重复记录要求删除表中name重复的id号小的那条记录,保留id号最大的那条。没有重复,不

求sql语句,去掉id号小的重复记录
要求删除表中name重复的id号小的那条记录,保留id号最大的那条。没有重复,不删除。
表名table1

id name
1 aa //后面重复删除
2 bb //无重复,不删除
3 cc //后面重复,删除
4 dd //无重复,不删除
5 cc //保留,重复,保留id号大的这个
6 aa //保留,重复,保留id号大的这个

结果:
2 bb
4 dd
5 cc
6 aa

谢谢!


[解决办法]
写错了,修改一下 count(1)>1
delete from
table1 where id in( 
select min(id) as id from table1 group by name having count(1) >1)

-----
这个只针对最多有重复2个,如果有3个以上的重复的话可以执行
while @@rowcount<>0

delete from
table1 where id in( 
select min(id) as id from table1 group by name having count(1) >1)



[解决办法]

SQL code
--trydelete tbNamewhere id not in(    select max(id) from tbName group by name)
[解决办法]
delete from table1 where id not in 
( select max(id) id from table1 where name in(
select name from (select name,count(name) as ts from table1 group by name) t where ts <>1 
) group by name ) and name in (select name from (select name,count(name) as tt from table1 group by name) s
where tt <> 1)
试试看,应该可以了!!

热点排行