可以用临时表,不过这种操作更简单!假设原来的表为cuku_inf,col_ckdh有重复,需要保留一笔即可
建立一张具有和cuku_inf相同结构的临时表mytemptable,单击鼠标右键,选择所有任务,选择管理索引,选择新建,起个索引名字,列就是col_ckdh,建立一个索引,勾选上唯一(unique),勾选上忽略重复的值,其他不要选择!然后把资料insert into到临时表,
此时SQL Server会返回如下提示:
  服务器: 消息 3604,级别 16,状态 1,行 1
  已忽略重复的键。
  它表明在临时表mytemptable中不会有重复的行出现。然后将原表cuku_inf清空,并将临时表mytemptable中数据导入,最后删除临时表mytemptable。
这样就完成了对表中重复记录的删除。该方法的执行速度都是相当快的,而且因为几乎不用写语句,所以它也是很安全的。不过要依靠你的col_ckdh,万一你操作不当,没有关系,不要那么急着删除原来的表,先select看看mytemptable的资料是否是对的,这样不会出什么异常,错删除纪录!

解决方案 »

  1.   

    另外则是大家经常用的临时表select identity(int,1,1) as sn ,cuku_inf.* into #MytempTable from cuku_inf 
    delete from cuku_inf --删除所有的纪录
    insert into cuku_inf 
    select M.col2,M.col3,.. from #MytempTable M   --插入,除了序号sn
    where not exists (select col_ckdh from #MytempTable T where T.col_ckdh = M.col_ckdh  and M.sn > T.sn )用第一种方法,速度快,这个耗时多,不过那个一个操作,这个是一个sql 语句,FYI
      

  2.   

    先把重復的記錄放到臨時表中
    然后把原表的重復記錄刪除掉
    最后把臨時表中的記錄插入原表中
    1﹑
    select * into ##ta from cuku_inf
    WHERE col_ckdh IN
              (SELECT col_ckdh
             FROM cuku_inf
             GROUP BY col_ckdh
             HAVING COUNT(col_ckdh) > 1)
    2﹑
    delete from cuku_inf WHERE col_ckdh IN
              (SELECT col_ckdh
             FROM cuku_inf
             GROUP BY col_ckdh
             HAVING COUNT(col_ckdh) > 1)
    3﹑
    insert into cuku_inf select * from ##ta
      

  3.   

    把重复数据distinct后放到临时表,然后删除原表,再把临时表内容插回去。
    楼上正解,不过1里面要稍微改一下:
    select distinct * into ##ta …………
      

  4.   

    to  wgqqgw(小强) 
    select distinct * into ##ta 也不一定对,,如果字段有些不相同的话就不能把重复的删除,而distinct *是取两行完全相同的记录!!先把重復的記錄放到臨時表中
    然后把原表的重復記錄刪除掉
    最后把臨時表中的記錄插入原表中
    1﹑
    select identity(int,1,1) as sn,* into ##ta from cuku_inf
    WHERE col_ckdh IN
              (SELECT col_ckdh
             FROM cuku_inf
             GROUP BY col_ckdh
             HAVING COUNT(col_ckdh) > 1)
    2﹑
    delete from cuku_inf WHERE col_ckdh IN
              (SELECT col_ckdh
             FROM cuku_inf
             GROUP BY col_ckdh
             HAVING COUNT(col_ckdh) > 1)
    3﹑
    insert into cuku_inf select * from ##ta where sn in (select min(sn) from #taa
    group by col_ckdh)
      

  5.   


    delete cuku_inf from cuku_inf a where exist (select  1 from cuku_inf b where a.col_ckdh=b.col_ckdh and a.col>b.col)
    col_ckdh  是你存存重复和字段
    col         是同一col_ckdh重复记录中,记录不同的字段!如果你的记录就是col_ckdh重复的话,col可以是你的任何字段!相关可以在论坛里搜索: 重复记录
    http://community.csdn.net/Expert/topic/2682/2682394.xml?temp=.9112207