ID NAME
1  chang  
1  chang
2  zhang
2  zhang
有没有一句SQL 删除重复记录,保留任意一个
记住:一句话;最好能分组删除(name列相同的为同一组)。
mssql下的

解决方案 »

  1.   


    delete table where ID not in (select max(ID) from table group by name)
      

  2.   

    select * from tableName group by name;
      

  3.   

    DELETE TB FROM TB T WHERE EXISTS(SELECT 1 FROM TB WHERE NAME =T.NAME AND ID<T.ID)
    DELETE A
    from Tb A,(
    SELECT NAME FROM Tb GROUP BY NAME HAVING COUNT(1)>1) as t
    where t.NAME = A.NAME
      

  4.   

    如果是彻底删除数据那用一楼的,如果是要查询呢用这个吧
    select * from table where ID in (select max(ID) from table group by name)http://www.mybuffet.cn
      

  5.   

    create table #EE
    (
      ID int,
      NAME varchar(20)
    )
    insert into #EE select 1,'chang'
    insert into #EE select 1,'chang'
    insert into #EE select 2,'zhang'
    insert into #EE select 2,'zhang'
    ;with hgo as
    (
     select *,
    row_number() over(partition by ID order by Name) rank from #EE
    )
    delete h from hgo h where ID=h.ID and rank=1   select * from #EEID          NAME
    ----------- --------------------
    1           chang
    2           zhang
      

  6.   

    create table #EE
    (
      ID int,
      NAME varchar(20)
    )
    insert into #EE select 1,'chang'
    insert into #EE select 1,'chang'
    insert into #EE select 2,'zhang'
    insert into #EE select 2,'zhang'
    --sql200
    delete from
    (
    select *,(select count(*)+1 from #EE group by ID having(ID)>1) rank from #EE
    ) EE
    where rank=2
    --sql2005
    ;with hgo as
    (
     select *,
    row_number() over(partition by ID order by Name) rank from #EE
    )
    delete h from hgo h where ID=h.ID and rank=1   select * from #EE
      

  7.   

    DELETE FROM table WHERE ID NOT IN (SELECT ID FROM (SELECT NAME,min(ID) ID FROM table GROUP BY NAME)t2)
      

  8.   

    考,你没有关键列?ID也不是自动增长的,上面那条ID是主键才能使用
      

  9.   

    这个简单啊,你给表里多增加一列,做主键并且是唯一的,就下面的语句
    delete MemberInfo where ID not in (
      select max(ID) from MemberInfo group by MemberName, MemberAddress)
    要是不想加,就看我的博客,希望对你有所帮助。
    http://blog.csdn.net/zuoming120/archive/2009/10/21/4709521.aspx
      

  10.   

    如果是删除 我考虑没错的话
     你需要一个存储过程解决比较方便
     首先用聚合函数COUNT统计出每种相同的个数
     我想你那样的应该是不规则情况 有1个的,3个的 11个的类似
      所以你需要判断下有多少个 然后去除掉这个关键字的count(*)-1次
    就是你需要达到的条件了