2009-06-24 10 views
4

Mit SQL habe ich 5 Spalten: ssn, Nachname, Vorname, RF und ein Flag-Feld. Ich muss durch diese Tabelle gehen und wo die 4 Spalten gleich einer anderen Zeile sind und der Wert des Flagfeldes in dieser Zeile gleich 2050 ist, dann lösche diesen 2050 Datensatz.Zeilen mit übereinstimmenden mehreren Spalten löschen gleiche Tabelle

+1

Danke Jungs, Es scheint ziemlich einfach, wenn Sie es in gedruckter Form zu sehen .. schätzen die Hilfe ... –

Antwort

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) 
Verwandte Themen