由于 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]);
我正在尝试提取 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]);