2010-09-21 8 views
1

J'ai une table avec les champs suivants. Mon exigence est de supprimer les enregistrements de la table lorsque 1. Le drapeau est défini sur 'Non' 2. Pour un titre, dans un enregistrement si le drapeau est défini sur 'Non' et dans un autre enregistrement s'il est défini sur 'Oui'. Supprimez les deux enregistrements. Par exemple TH-123, Dans le 1er enregistrement, le drapeau est mis à 'Non' et dans le 4ème drapeau d'enregistrement est réglé 'Oui'. Supprimez les deux enregistrements. 3. Pour un titre, dans un enregistrement si le drapeau est réglé sur 'Non' et dans un autre enregistrement s'il est défini sur '' (espace). Supprimez les deux enregistrements. Par exemple TH-344. Supprimez les deux enregistrements.Requête pour supprimer des enregistrements

Title      Flag  

    TH-123      No 
    TH-344       
    TH-543      No 
    TH-123      Yes 
    Th-344      No 
    Th-098      Yes 
    Th-876      Yes 
    Th-098      Yes 
    Th-512      No 

alors maintenant j'attends un résultat, avec les enregistrements suivants.

Th-098      Yes 
    Th-876      Yes 
    Th-098      Yes 

Je l'ai fait avec 2 requêtes.

update temp1 set [flag] = 'No' WHERE Title IN 
(SELECT Title FROM temp1 where [flag] = 'No') 

delete from temp1 where [flag] = 'No' 

Est-il possible de faire avec une seule requête. Si oui s'il vous plaît laissez-moi savoir ou tout autre meilleure procédure ..

Répondre

4
delete from temp1 
where 
    Title IN 
     (SELECT Title FROM temp1 where [flag] = 'No') 
+1

Thanku. la requête est intelligente. – satya

1

Cela devrait fonctionner:

delete from t1 
from temp1 t1 
    inner join temp2 t2 on t1.Title = t2.Title 
where t2.[flag] = 'No' 
Questions connexes