繁体   English   中英

在 MS-Access Select 查询中使用 switch 和“in”

[英]Use switch and "in" in MS-Access Select Query

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

自动的 手动的
X1 X1
Y27

和一个查找表

抬头
X1
Y27
...

我想 select 来自第一个表的值,如果它包含在查找表中。 所以对于第二行,它应该取值 Y27,因为 Y 不在查找表中。

我用这个查询试了一下:

Select 
Switch(
       Automatic in (SELECT Lookup FROM LookupTable), Automatic,
       True, Manual,
      ) AS ValidEntry
FROM Datatable;

我的查询为文本:检查“自动”中的值是否在查找表中,如果是 -> 取值,如果不是,则从另一列“手动”中取值并返回一个名为“ValidEntry”的条目。

使用 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 Function 如果不是 null,则返回第一个参数,否则返回第二个。 查找表连接了两次:手动查找是一个内部连接,因为我假设总会有一个备用值,而自动查找作为一个外部连接连接,这意味着它在值不匹配时返回 NULL .

暂无
暂无

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

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