如何根据连接集中的条件从表中删除记录?

时间:2010-08-19 20:56:57

标签: sql

我有两张桌子

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

现在,我想从Table中删除那些记录:1,其AwpUnitCost是< = 0,AwpUnitCost是NULL,并且它没有来自Table的相同Ndc:2。

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

我相信这就是你想要的:

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