在 MS 访问中选择查询中使用开关和"in"



假设我有两个表,其中第一个表包含我的数据:

手动
自动
X1 X1
Y Y27

使用INNER JOIN,应该会更快。

select somedata from table1 t  
inner join lookupTbl l on l.lookupfield = t.automatic  

带IN条款:

select somedata from table1 t  
WHERE t.automatic IN (select lookupfield FROM lookupTbl)

这就是您需要做的:

SELECT NZ( LookupTableAutomatic.Lookup, LookupTableManual.Lookup) AS Lookup
FROM (LookupTable AS LookupTableManual INNER JOIN DataTable  
ON LookupTableManual.Lookup = DataTable.Manual) 
LEFT OUTER JOIN LookupTable AS LookupTableAutomatic ON LookupTableAutomatic.Lookup = DataTable.Automatic;

作为解释,如果第一个参数不为空,NZ函数将返回第一个参数,否则将获取第二个参数。查找表被联接了两次:手动查找是一个INNER JOIN,因为我假设总是有一个回退值,而自动查找是作为OUTER JOIN联接的,这意味着当值不匹配时它返回NULL。

最新更新