delete a from 表 a left join(
    select 主键=min(主键) from 表
    group by 列1,列2  --假设对列1,列2去重复
)b on a.主键=b.主键
where b.主键 is null

解决方案 »

  1.   

    to zjcxc(邹建):
    你能这个语法:
    delete a from 表 a left join(
        select 主键=min(主键) from 表
        group by 列1,列2  --假设对列1,列2去重复
    )b on a.主键=b.主键
    where b.主键 is null
    我不是很懂,能麻烦你解释一下吗??谢谢啦
      

  2.   

    为什么不用:select distinct * from 表   这样无论怎样关联表都可以去掉重复行Distinct:返回一个集合,并从指定集合中删除重复的元组
      

  3.   

    以后遇到这样的问题,先看SQL SERVER帮助,其实在select的帮助条例里就有distinct的说明啊
    至于多表连接,只要吃透select,问题不会很大。而且,自己看可能比问要快。
      

  4.   

    为什么不用:select distinct * from 表   这样无论怎样关联表都可以去掉重复行Distinct:返回一个集合,并从指定集合中删除重复的同意 
      

  5.   

    不好意思,我那个是对表中记录删除重复处理的。如果对查询结果的指定一些列去重复,那么你必须确定其他列的值如何取舍。
    例如,查询如果得到如下结果:
    col1    col2    col3   col4
    ------- ------- ------ ---------
    1       1       1      2
    1       1       1      3
    1       2       1      2
    1       2       2      2
    如果你想col1,col2列的值不重复,那么你必须确定col3,col4的值如何取舍(取那些值)
      

  6.   

    WHERE COL1 <> COL2 不行吗?
      

  7.   

    SORRY,俺理解错误,当俺没回复
      

  8.   

    为什么不用:select distinct * from 表   这样无论怎样关联表都可以去掉重复行Distinct:返回一个集合,并从指定集合中删除重复的元组我也很同意,你可以试一哈