我试图拔出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]);