仅当另一个表中没有记录时才链接两个表以查找记录
Posted
技术标签:
【中文标题】仅当另一个表中没有记录时才链接两个表以查找记录【英文标题】:Linking two tables to find a record only if there isn't a record in another table 【发布时间】:2017-08-31 03:36:31 【问题描述】:我有两张桌子...
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 )
【讨论】:
你是第一个这样做的。谢谢。【参考方案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;
【讨论】:
【参考方案3】:你需要将join字段与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)
【讨论】:
在where'附近出现语法错误'关键字'WHERE'附近的语法不正确。' 我已经更新了答案并添加了另一种方法【参考方案4】:这个问题被问了很多次:
https://***.com/a/5840232/1334425 https://***.com/a/4076157/1334425 https://***.com/a/6528786/1334425 https://***.com/a/6613752/1334425 https://***.com/a/6601945/1334425您需要加入第一个条件匹配和指定 失败 匹配的第二个条件:
SELECT t1.ClientNo
FROM tbl1 t1
LEFT JOIN tbl2 t2 ON
t1.ClientNo = t2.ClientNo
AND t1.ClientNo IS NULL
【讨论】:
以上是关于仅当另一个表中没有记录时才链接两个表以查找记录的主要内容,如果未能解决你的问题,请参考以下文章