2010-08-19 105 views
0

我有两个表如何根据联接集中的条件从表中删除记录?

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

现在,我想从表中删除这些记录:1,其AwpUnitCost是< = 0,AwpUnitCost IS NULL,它不会从表具有相同的ndc的:2

+0

认为你可能需要澄清一点。你加入名字上的表? – 2010-08-19 20:58:19

+0

如果您编辑此标题以获得更具描述性的标题,您将有更好的机会获得答案。 – 2010-08-19 21:02:16

回答

1

我相信这是你想要什么:

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

非常感谢您的帮助。万分感激。 – User7354632781 2010-08-19 21:08:18

1

这可能会做你的要求。该语句从第一个表中删除,其中AwpUnitCost小于或等于0. COALESCE将空值更改为0,因此具有空AwpUnitCost的行将包含在删除中。

NOT IN子句包含NdcAwp中不在InvalidNdcs中的行,基于Ndc值。

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

非常感谢您的帮助。万分感激。 – User7354632781 2010-08-19 21:05:34