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