当前位置: 代码迷 >> Sql Server >> 怎样能“高效”剔除表中某列重复的行,该如何解决
  详细解决方案

怎样能“高效”剔除表中某列重复的行,该如何解决

热度:101   发布时间:2016-04-27 19:55:31.0
怎样能“高效”剔除表中某列重复的行
表中有一列   数据类型是   varchar(64)   ,这一列可能重复,现在要把这列重复的行删除,请问怎么能方便   快速的删除呢?

如:表
col001               col002         col003
dfag                   abc                   dgage
fdf                     def                   xyz
fejif                 def                   xyz

删除后效果
col001               col002         col003
dfag                   abc                   dgage
fdf                     def                   xyz


------解决方案--------------------
如:表
col001 col002 col003
dfag abc dgage
fdf def xyz
fejif def xyz

删除后效果
col001 col002 col003
dfag abc dgage
fdf def xyz

以col002,为准.保留任意一行.
delete from tb where col001 not in (select min(col001) from tb group by col002)

------解决方案--------------------
上面的回答都用到了 in (select ...) 这样当表中数据大于100万时是很慢的,你能想象in 中的数据是100万个以上选项的后果吗?慢死你。
对于1万条以下记录可以采用,100万以上记录应当采用:
select b.* from (select col003 from <table> group by col003 ) a left join <table> b on a.col003=b.col003
  相关解决方案