我有一张交易表,上面有一些交易ID和员工编号。我还有另外两个表,它们基本上只是一列事务或雇员,需要从第一个表中筛选出来。
我一直这样运行我的查询:
SELECT * FROM TransactionMaster
Where TransactionMaster.TransID
NOT IN (SELECT TransID from BadTransactions)
AND etc...(repeat for employee numbers)
我注意到在运行这些类型的查询时性能很慢。我想知道是否有更好的方法来构建这个查询?
最佳答案
如果希望所有TransactionMaster
行在TransID
中不包含BadTransactions
匹配项,请使用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
。如果您有可用的访问权限,请使用“不匹配查询向导”创建新查询。它将指导您完成创建类似查询的步骤。
关于database - 使用MS Access中另一个表中的值筛选表的正确方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16067694/