2010-08-19 5 views
0

J'ai deux tablesComment supprimer des enregistrements d'une table en fonction des conditions d'un ensemble joint?

Table : 1, Name : NdcAwp, Columns-Ndc, AwpUnitCost 
Table : 2, Name : InvalidNdcs, Column-Ndc 

Maintenant, je veux supprimer les enregistrements du tableau: 1 dont AwpUnitCost est < = 0, AwpUnitCost IS NULL et il n'a pas la même Ndc du tableau: 2.

+0

Pensez vous pourriez avoir besoin de clarifier un peu. Vous rejoignez les tables sur Name? –

+0

Vous aurez une meilleure chance d'obtenir une réponse si vous éditez ceci pour avoir un titre plus descriptif. –

Répondre

1

Je crois que c'est ce que vous voulez:

DELETE FROM NdcAwp 
WHERE (AwpUnitCost <= 0 
OR AwpUnitCost IS NULL) 
AND Ndc NOT IN 
(
SELECT Ndc 
FROM InvalidNdcs 
) 
+0

Merci beaucoup pour votre aide. vraiment apprécié. – User7354632781

1

Cela peut faire ce que vous demandez. L'instruction supprime de votre première table où AwpUnitCost est inférieur ou égal à 0. COALESCE modifie les valeurs nulles à 0, de sorte que les lignes contenant la valeur null AwpUnitCost seront incluses dans la suppression.

La clause NOT IN inclut des lignes dans NdcAwp qui ne sont pas dans InvalidNdcs, en fonction de la valeur Ndc.

DELETE 
FROM NdcAwp 
WHERE COALESCE(AwpUnitCost, 0) <= 0 
    AND Ndc NOT IN (SELECT Ndc FROM InvalidNdcs) 
+0

Merci beaucoup pour votre aide. vraiment apprécié. – User7354632781

Questions connexes