2009-06-24 33 views
4

SQLを使用して、私は5列:ssn、姓、名、RFとフラグフィールドを持っています。私はこのテーブルを通過する必要があり、4列が別の行に等しく、その行のフラグフィールドの値が2050に等しい場合、その2050レコードを削除します。あなたは、印刷でそれを見たらみんなが、それはかなり単純現れる複数の列が一致する行を削除同じテーブル

+1

おかげ.. は本当に助けに感謝... –

答えて

8
delete from MyTable m 
where flag = 2050 
and exists (
    select 1 from MyTable where 
    MyTable.ssn = m.ssn 
     and MyTable.lastname=m.lastname 
     and MyTable.firstname=m.firstname 
     and MyTable.RF=m.RF 
     and MyTable.flag <> 2050 
) 
2
delete from TableName as tn 
where tn.flag = 2050 and 
exists (select * from TableName as tn2 where tn.ssn = tn2.ssn 
     and tn.lastname = tn2.lastname and tn.firstname = tn2.firstname 
     and tn.rf = tn2.rf and tn2.flag <> 2050) 
4
DELETE 
    T1 
FROM 
    My_Table T1 
INNER JOIN My_Table T2 ON 
    T2.ssn = T1.ssn AND 
    T2.last_name = T1.last_name AND 
    T2.first_name = T1.first_name AND 
    T2.RF_name = T1.RF_name AND 
    T2.flag <> T1.flag 
WHERE 
    T1.flag = 2050 
1
delete from Table1 
where flag = 2050 
    and exists (select * 
       from Table2 
       where ssn = Table1.ssn 
        and lastname = Table1.lastname 
        and firstname = Table1.firstname 
        and rf = Table1.rf 
        and flag <> 2050)