我想设计一个查询,基本上要进行大量"Not Like "*x*"
,除了我不希望查询包含的所有内容都在另一列中。
我知道我可以一次使用标准并指定"Not like "*x*"
来一次,但是我不知道如何对整个数据列执行not like
。
因此,从长远来看,我在公司网络的多个不同服务器上托管了一堆摄像机。这些摄像机中的每一个都在同一子网上,并且除IP地址的最后一个八位位组之外的所有内容都与服务器匹配。现在,我已经在查询中创建了一个字段,该字段会修剪IP的最后一个八位位组,因此,现在我基本上已经有了一个预先设置好的IP范围,说明摄像机的位置。但是,我没有每个摄像机的确切清单-确实没有一种快速的方法。
我有一个正在处理的问题列表,并且我注意到问题列表中出现了一些摄像机(基本上是一个包含一堆IP地址的表)。我想从报告中删除所有可能的摄像机实例。
我见过人们能够像圆柱一样进行比较的设计,但我想相反。我想生成一个查询,其中不包含“相机”列中的内容。
为此,我将在具有摄像机范围Camera Ranges
和字段Camera Range
的地方调用查询。
有没有办法可以做到这一点?
我愿意设计查询,甚至可以更改表以使其更易于执行查询。
答案 0 :(得分:0)
类似于我提供的答案here,而不是使用否定选择,在该选择中您测试记录保存的值是否 不喜欢 另一个数据集中的任何记录,更简单的方法是匹配那些 类似于数据集的记录,并返回那些不匹配的记录。
要实现此目的,可以在left join
子句中将is null
与where
条件结合使用,例如:
select
MainData.*
from
MainData left join ExclusionData on
MainData.TargetField like ExclusionData.Pattern
where
ExclusionData.Pattern is null
或者,如果模式字段尚未包含通配符运算符:
select
MainData.*
from
MainData left join ExclusionData on
MainData.TargetField like '*' & ExclusionData.Pattern & '*'
where
ExclusionData.Pattern is null
请注意,MS Access将无法在查询设计器中表示这样计算出的联接,但是MS Access使用的JET数据库引擎仍将能够解释和执行有效的SQL。