带有join的SQL Query检查2个条件

时间:2017-08-03 19:00:02

标签: sql sql-server

主表:

MasterID | PartID  
1          1  
2          3  
3          5  

部分表:

PartID | PartName | DeleteDate  
1        Part1      NULL  
2        Part2      NULL  
4        Part4      NULL  
5        Part5      08-04-2017 

结果表:

MasterID | PartID  
2          3  
3          5  

这两个表存在于两个不同的数据库中,如果主表具有不在Part表中的PartID且Master表具有在Part表中删除的任何PartID,则需要使用SQL查询进行验证以获取记录(即DeleteDate IS NOT NULL)

我正在尝试以下查询,

Select 
    * 
FROM DBNAME.DBO.Master 
Where PartID in (
    Select 
        PartID 
     from Part) 
and PartID not in (
    Select 
        PartID 
    from Part 
    where DeleteDate is NOT NULL)

请让我知道是否有更好的方法。

2 个答案:

答案 0 :(得分:0)

您可以将查询简化为:

Select m.* 
from DBNAME.DBO.Master m
where m.PartID not in (Select p.PartID from Part p where p.DeleteDate is NOT NULL);

您似乎想要的行不是“未删除”,无论它们是否在表格中。

答案 1 :(得分:0)

你根本不需要第二个条件。

Select * DBNAME.DBO.Master Where PartID not in (Select PartID from Part) 

涵盖PartID not in (Select PartID from Part where DeleteDate is NOT NULL)