2016-03-28 47 views
1

SO我有两个表连接彼此数据库 - 查询检索行中的其他表中不存在

TABLE Admin_Evaluate 
EvalID int primary key, 
EvalStatus tinyint, 
UserID int (foreign to user) 

TABLE Items 
ItemID int primary key, 
EvalID (foreign to Admin_Evalulate) 

Sample Data: 

| TABLE Admin Evaluate | 
--------------------------------------------- 
EvalID | EvalStatus | UserID 
    1   0   5 
    2   1   5 
    3   0   5 
    4   1   5 
    5   1   5 
    6   1   5 


| TABLE Items | 
---------------------------------------------- 
ItemID | EvalID 
    1   2 
    2   4 

所以基本上我想要检索的EvalID其中EvalStatus = 1和用户ID = 5,中不存在的表物品

结果应该EvalID 5和6

感谢提前:)

回答

3

您可以使用NOT EXISTS

SELECT EvalID 
FROM Admin_Evaluate AS a 
WHERE EvalStatus = 1 AND UserID = 5 AND 
     NOT EXISTS (SELECT 1 FROM Items AS i WHERE i.EvalID = a.EvalID) 
2

这可以用左手来完成连接:

SELECT t.evalID FROM Admin_Evaluate t 
LEFT OUTER JOIN Items s 
ON(t.evalID = s.evalID) 
WHERE s.evalID is null 
    AND t.evalstatus = 1 
    and t.userID = 5 
0

您可以使用LEFT JOIN:

SELECT * FROM Admin_Evaluate a LEFT JOIN Items i ON i.EvalId = a.EvalId WHERE EvalStatus = 1 AND UserID = 5 AND i.EvalId is NULL;