由于不在查询访问2013 SQL中而导致无尽的循环



我试图拔出1个表(a(中的所有电话号码,而另一个表(b(中不是。我尝试了左外连接的,但这永远不会停留很长时间。一旦我回到数据表并返回SQL,它就会返回左联接。

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

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])));

我遇到的常规"不在"的问题是,我所做的是无线号上有" - " s,电话号码没有。无线数据是我不想修改以易于使用的外部数据。简而言之,我不想修改TBLB中的任何内容。

如果某人有一种更简单的方法来查找值,而不是在另一个表中找到值,那么我全都是耳朵。这不是杀死我的功能。预先感谢。

当我运行上面的代码时。访问只是踩踏,什么也不会发生。它似乎崩溃了。不知道它在做什么。

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

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

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

如果电话号码可能是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]);

最新更新