SQL Query Duplicate Removal Help

后端 未结 4 510
栀梦
栀梦 2021-01-24 06:32

I need to remove semi duplicate records from the following table

ID      PID      SCORE
1       1        50
2       33       20
3       1        90
4       5             


        
4条回答
  •  清歌不尽
    2021-01-24 07:13

    try this..

        declare @tt table(id int, pid int,score int)
        insert into @tt
        select 1,1,50 union all
        select 2,33,50 union all
        select 8,33,80 union all
        select 3,1,90 union all
        select 4,5,50 union all
        select 5,5,10 union all
        select 6,6,10 union all
        select 7,6,50  
        ---------   
        delete from @tt where id in (
        select t1.id from @tt t1 inner join
        (
            select  MIN(score) tScore,pid tPid from @tt where pid in 
            (select  pid from @tt group by pid having count (pid) > 1) group by pid 
        ) t2 on t1.pid=t2.tPid and t1.score=t2.tScore)
    
        select * from @tt
    

提交回复
热议问题