You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access 2013 SQL中NOT IN查询引发无限循环问题求助

解决从表A提取未出现在表B中的电话号码问题

嘿,我明白你遇到的困扰了!先给你理清几个关键点,再给你靠谱的解决方案:

关于LEFT OUTER JOIN自动变成LEFT JOIN的问题

不用慌,这是Access的正常行为——在Access SQL里,LEFT JOIN和LEFT OUTER JOIN是完全等价的,Access只是自动帮你简化了写法,不影响查询功能,你不用纠结这个差异。

为什么你的NOT IN查询会出问题?

你的当前查询用了NOT IN子查询,但如果tblB.[Wireless Number]字段存在NULL值,这个查询就会返回空结果!因为SQL中任何值和NULL比较都会得到UNKNOWN,整个NOT IN条件会直接失效。这应该就是你遇到“更多问题”的核心原因。

更可靠的LEFT JOIN写法

用LEFT JOIN配合IS NULL的写法,能完美避开NULL的坑,而且效率通常也更高,写法如下:

SELECT tblA.[Phone Number]
FROM tblA 
LEFT JOIN tblB ON tblA.[Phone Number] = tblB.[Wireless Number]
WHERE tblB.[Wireless Number] IS NULL;

这个查询的逻辑是:

  • LEFT JOIN会保留tblA里的所有记录,不管tblB有没有匹配的电话号码
  • WHERE tblB.[Wireless Number] IS NULL筛选出那些在tblB里完全找不到匹配的记录,也就是你要的“未出现在表B中的电话号码”

额外提示

如果tblA里存在重复的电话号码,需要去重的话,可以加上DISTINCT:

SELECT DISTINCT tblA.[Phone Number]
FROM tblA 
LEFT JOIN tblB ON tblA.[Phone Number] = tblB.[Wireless Number]
WHERE tblB.[Wireless Number] IS NULL;

内容的提问来源于stack exchange,提问作者D. Steel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:39:39