怎样能“高效”剔除表中某列重复的行
表中有一列 数据类型是 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