我有两张桌子......
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
答案 0 :(得分: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 )
答案 1 :(得分: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)
答案 2 :(得分: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;
答案 3 :(得分:0)
这个问题被多次提出并回答:
你需要加入第一个条件匹配和第二个条件来指定失败的匹配:
SELECT t1.ClientNo
FROM tbl1 t1
LEFT JOIN tbl2 t2 ON
t1.ClientNo = t2.ClientNo
AND t1.ClientNo IS NULL