Sql 仅当另一个表中没有记录时链接两个表以查找记录

Sql 仅当另一个表中没有记录时链接两个表以查找记录,sql,join,sql-server-2012,Sql,Join,Sql Server 2012,我有两张桌子 tbl1 ClientNo ApptID Status 1234 1 121 1234 2 121 1235 1 121 1235 2 121 tbl2 ClientNo Valid 1234 1

我有两张桌子

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

您可以尝试以下查询:

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

您需要将联接字段与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)

请尝试以下答案:

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;

这个问题被问了很多次,也被回答了很多次:

您需要使用第一个匹配条件和第二个指定失败匹配的条件进行连接:


在where附近出现语法错误“关键字where附近的语法不正确”。“我已更新了答案,并添加了另一种方法您是第一个这样做的人。”。非常感谢。
SELECT t1.ClientNo
  FROM tbl1 t1
  LEFT JOIN tbl2 t2 ON
    t1.ClientNo = t2.ClientNo
    AND t1.ClientNo IS NULL