假设我有两个表,其中第一个表包含我的数据:
自动 | |
---|---|
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。