2011-08-17 6 views
0

重複する行を削除したいテーブルがあります。重複する行は、attributeID、section、keyid、productId、およびvalueフィールドに基づいています。各重複行には一意のIDがあります(productattributeID)。重複スクリプトヘルプ

select aa.attributeID,section,keyid,productID, value,count(*) 
from productattribute PA 
inner join AvailableAttribute AA on AA.AttributeID = PA.productID 
group by aa.attributeID,section,keyid,productID, value 
having count(*)>1 

私は、各行のうちの1つを除くすべてを削除するスクリプトを書くのに苦労しています:

次のスクリプトは、行が重複しているかを表示します。 誰でも助けてくれますか?

おかげ

答えて

1

あなたはこのような何か行うことができます。

declare @productattribute as table(productattributeID int,section varchar(20),keyid int,productId int,value varchar(20)) 
declare @AvailableAttribute as table(attributeID int) 

insert into @productattribute values(1,'a',10,20,'v') 
insert into @productattribute values(2,'a',10,20,'v') 
insert into @productattribute values(3,'a',10,20,'v') 
insert into @productattribute values(4,'b',150,208,'vb') 
insert into @productattribute values(5,'b',150,208,'vb') 
insert into @productattribute values(6,'b',150,208,'vb') 
insert into @productattribute values(7,'a',8,20,'v') 
insert into @productattribute values(8,'a',10,19,'v') 

insert into @AvailableAttribute values(20) 
insert into @AvailableAttribute values(20) 
insert into @AvailableAttribute values(20) 
insert into @AvailableAttribute values(208) 
insert into @AvailableAttribute values(208) 
insert into @AvailableAttribute values(208) 
insert into @AvailableAttribute values(20) 
insert into @AvailableAttribute values(19) 

select * from @productattribute 

delete from @productattribute where productattributeID not in 
(
    select MIN(productattributeID) from @productattribute 
     where exists 
     (
      select * from 
        (select section,keyid,productID,value,attributeID 
         from @productattribute inner join @AvailableAttribute on attributeID = productId 
          group by attributeID,section,keyid,productId,value) X 
        where X.attributeID=attributeID and X.keyid=keyid and X.productId=productId and X.section=section and X.value=value 
     ) group by section,keyid,productId,value 
) 

select * from @productattribute