日期:2014-05-18  浏览次数:20467 次

急求按一个字段删除重复记录的sql
表   test1,   字段为id   int,   name   varchar
name重复,id主键,求删除重复的name字段的sql语句
很急啊,试了半天没试出来。。

------解决方案--------------------
--如果是隨便保留哪條數據
Delete From test1 Where id Not In (Select Min(ID) From test1 Group By name)

--或者
Delete From test1 Where id Not In (Select Max(ID) From test1 Group By name)
------解决方案--------------------
delete test1 where id not in(select min(id) from test1 group by name)
------解决方案--------------------
--保留一条
delete from test1 where id not in (select min(id) from test1 group by name)

--删除全部
delete from test1 where name in (select name from test1 group by name having count(*) > 1)


------解决方案--------------------
呵呵~本来就是一句话,这里很多高手的~哈哈
学习
------解决方案--------------------
学习
------解决方案--------------------
學習了,我也遇到過差不多的問題
但有點區別
我的有幾個字段
比如,表名FileName
字段FileId ,FileName,FileNode,FileText
這幾個字段都不是關鍵字,我的要求是:
這幾個字段都可能有完全相同的記錄,我隻要保留其中的隨便一條,請問怎麼寫
當初我是用寫了個存儲過程,並用了遊標解決的
------解决方案--------------------
學習了,我也遇到過差不多的問題
但有點區別
我的有幾個字段
比如,表名FileName
字段FileId ,FileName,FileNode,FileText
這幾個字段都不是關鍵字,我的要求是:
這幾個字段都可能有完全相同的記錄,我隻要保留其中的隨便一條,請問怎麼寫
當初我是用寫了個存儲過程,並用了遊標解決的


這幾個字段都可能有完全相同的記錄,我隻要保留其中的隨便一條,請問怎麼寫
如果还有一个能区分大小(這幾個字段除外)id1
delete from tb where id1 not in (select min(id1) from tb group by 這幾個字段)
如果没有一个能区分大小,则只能使用临时表.
select id2 = identity(int,1,1) , * into temp from tb
delete from tb where id2 not in (select min(id2) from tb group by 這幾個字段)


------解决方案--------------------
樓上的解答可以幫助樓主解決問題了
但提醒樓主,以后建表時不要使用系統關鍵字作為字段名,如: name 等。
------解决方案--------------------
謝謝,學習了