繁体   English   中英

使用MS Access中另一个表中的值过滤表的正确方法?

[英]Proper way to filter a table using values in another table in MS Access?

我有一个包含一些交易ID和员工编号的交易表。 我还有另外两个表,它们基本上只是一个需要从第一个过滤掉的事务或员工的列。

我一直在运行我的查询:

SELECT * FROM TransactionMaster 
Where TransactionMaster.TransID 
NOT IN (SELECT TransID from BadTransactions) 
AND etc...(repeat for employee numbers)

我注意到在运行这些类型的查询时性能下降。 我想知道是否有更好的方法来构建此查询?

如果您想要所有在BadTransactions不包含TransID匹配的TransactionMaster行,请使用LEFT JOIN并仅请求BadTransactions.TransID Is Null (不匹配)的行。

SELECT tm.*
FROM
    TransactionMaster AS tm
    LEFT JOIN
    BadTransactions AS bt
    ON tm.TransID = bt.TransID 
WHERE bt.TransID Is Null;

TransID索引时,该查询应该相对较快。

如果您有Access可用,请使用“不匹配的查询向导”创建新查询。 它将指导您完成创建类似查询的步骤。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM