急求按一个字段删除重复记录的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 等。
------解决方案--------------------謝謝,學習了