2017-04-05 46 views
0

我有两个表的记录...链接两个表来查找记录仅如果没有另一个表

tbl1 
ClientNo  ApptID   Status 
1234   1    121 
1234   2    121 
1235   1    121 
1235   2    121 


tbl2 
ClientNo  Valid   
1234   17 

我期待选择TBL1所有客户 - 其中ApptID = 2 ,而tbl2中没有相应的记录。所以根据这些数据,1234在tbl2中有记录,那么不需要在最终结果中显示它。

我很想看到这是最终的结果:

ClientNo  ApptID   Status 
1235   2    121 

回答

1

你可以试试下面的查询:

SELECT t1.* 
FROM tbl1 AS t1 
WHERE t1.ApptID = 2 AND 
     NOT EXISTS (SELECT 1 
        FROM tbl2 AS t2 
        WHERE t1.ClientNo = t2.ClientNo) 
+0

此致首先是做到了。谢谢。 – BobSki

1

你需要比较联接字段设置为NULL

SELECT t1.* FROM tbl1 t1 
    LEFT JOIN tbl_2 t2 
    ON t1.ClientNo = t2.ClientNo 
    WHERE t1.ApptID=2 AND t2.ClientNo IS NULL 

或使用子查询如下:

SELECT * FROM tbl1 
    WHERE ApptID=2 AND ClientNo NOT IN (SELECT ClientNo FROM tbl_2) 
+0

在'WHERE'关键字附近语法错误附近获取语法错误。' – BobSki

+0

我已经更新了答案并添加了一种方法 – MaxZoom

1

请尝试以下答案:

SELECT * FROM TBL2 T2 
RIGHT JOIN 
(SELECT * FROM TBL1 WHERE ApptID = 2) TBL T1 
ON T2.ClientNo = T1.ClientNo 
WHERE T2.ClientNo IS NOT NULL; 
相关问题