SQL Sever如何删除重复行数据?具体要求是,比如有表a(ID,Name,ZhouQi,Region),其中ID为key ,我要查找表中党Name和Region同时相同时的数据行并删除它?请问如何解决啊?比如 数据1):10,Keti,4,家里。数据2):11,Keti,6,家里。我想删除其中指定的第2条数据。

解决方案 »

  1.   


    create table 表a
    (ID int, Name varchar(10), ZhouQi int, Region varchar(10))insert into 表a
     select 10, 'Keti', 4, '家里' union all
     select 11, 'Keti', 6, '家里'
    with t as
    (
    select ID,Name,ZhouQi,Region,
           row_number() over(partition by name,Region order by ID) 'rn'
    from 表a
    )
    delete from t where rn>1
    select ID,Name,ZhouQi,Region from 表a/*
    ID          Name       ZhouQi      Region
    ----------- ---------- ----------- ----------
    10          Keti       4           家里(1 row(s) affected)
    */
      

  2.   

     with cte as
    ( select *,ROW_NUMBER()over(partition by Name order by name)aid from 表a )
    delete from cte where aid>1
      

  3.   

    select * into b from a
    delete from a where id = (select id from b where a.id = b.id and a.Name = b.name and a.Region = b.Region)