ID        NAME
1 zhanglei
2 wanglei
3 hao
4 haoren
5 haha
6 zhanglei
7 zhanglei我想删除 ID 不一样,但是名字是一样的重复行,留取其中一行。

解决方案 »

  1.   

    DECLARE @T TABLE(ID INT,NAME VARCHAR(40))
    INSERT @T SELECT 1,'zhanglei'
    UNION ALL SELECT 2,'wanglei'
    UNION ALL SELECT 3,'hao'
    UNION ALL SELECT 4,'haoren'
    UNION ALL SELECT 5,'haha'
    UNION ALL SELECT 6,'zhanglei'
    UNION ALL SELECT 7,'zhanglei'----
    DELETE A 
    FROM @T A
    WHERE EXISTS
    (SELECT 1 FROM @T WHERE NAME=A.NAME AND ID<A.ID )
    --result
    SELECT * FROM @T
      

  2.   

    delete from table1 A where id >(select min(id) from table 1 where Name=A.name)
      

  3.   

    delete from table1  where id not in
    (select DISTINCT id from table1 )
      

  4.   

    create table TableA(ID INT,NAME VARCHAR(40))
    INSERT TableA  SELECT 1,'zhanglei'
    UNION ALL SELECT 2,'wanglei'
    UNION ALL SELECT 3,'hao'
    UNION ALL SELECT 4,'haoren'
    UNION ALL SELECT 5,'haha'
    UNION ALL SELECT 6,'zhanglei'
    UNION ALL SELECT 7,'zhanglei'delete from tableA where ID not in(select min(ID) as ID from tableA group by Name,ID)
      

  5.   

    delete from tableA where ID not in(select min(ID) as ID from tableA group by Name,ID)
      

  6.   

    delete from tableA where ID <(select max(ID) as ID from tableA group by Name,ID)