由于 NOT IN query Access 2013 导致无限循环 SQL

Endless Looping due to NOT IN query Access 2013 SQL

我正在尝试提取 1 table (A) 中的所有 phone 数字,而在另一个 table 中 not (二).我已经尝试过 LEFT OUTER JOIN,但它永远不会停留很长时间。一旦我转到数据表并返回到 SQL,它就会返回到 LEFT JOIN。

也就是说,这是我的代码。

SELECT tblA.[Phone Number]
FROM tblA LEFT JOIN tblB ON tblA.[Phone Number] = tblB.[Wireless Number]
WHERE (((tblA.[Phone Number]) NOT IN (SELECT [Wireless Number] FROM 
[tblB])));

我遇到的常规 "not in's" 问题是无线号码中有“-”,而 Phone 号码中没有。无线数据是外部数据,我不想为便于使用而修改。简单的说,我不想修改tblB中的任何东西。

如果有人有更简单的方法来查找另一个 table 中没有的值,我会洗耳恭听。这个 NOT IN 功能让我很难受。提前致谢。

当我运行上面的代码。访问只是假脱机,什么也没有发生。它似乎使 Access 崩溃。不确定它在做什么。

如果问题是 - 破折号,只需使用 Replace:

删除它们
SELECT tblA.[Phone Number]
FROM tblA
WHERE tblA.[Phone Number] NOT IN (SELECT Replace([Wireless Number], "-", "") FROM [tblB]);

另外,不需要左连接。 Not In 是一个子查询,因此您无需担心。

如果 phone 数字可能是 Null,或者性能很重要,Not Exists 通常优于 Not In

SELECT tblA.[Phone Number]
FROM tblA
WHERE NOT EXISTS (SELECT 1 FROM [tblB] WHERE Replace(tblB.[Wireless Number], "-", "") =  tblA.[Phone Number]);