1

我想设计一个基本上执行大量 的查询"Not Like "*x*",除了我不希望查询包含的所有内容都在另一列中。

我知道我可以通过仅使用条件和指定来一次执行此操作"Not like "*x*",但我不知道如何not like为一整列数据执行操作。

因此,长版本是我在公司网络上的几个不同服务器上托管了一堆摄像机。这些摄像机中的每一个都位于同一子网中,并且除了 IP 地址的最后一个八位字节之外的所有内容都与服务器匹配。现在,我已经在查询中创建了一个字段,该字段修剪了我的 IP 的最后一个八位字节,所以我现在基本上有了一个预先制作的 IP 范围,说明摄像机可能在哪里。但是,我没有每台相机的确切清单——而且没有真正快速的方法来做到这一点。

我有一个我正在处理的问题列表,我注意到问题列表中出现了一些摄像机(基本上是一个包含一堆 IP 地址的表)。我想从报告中删除所有可能的摄像机实例。

我见过人们能够像列一样进行比较的设计,但我想做相反的事情。我想生成一个查询,其中不包含任何类似于相机列中的内容。

为此,我将调用具有相机范围Camera Ranges和字段的查询Camera Range

有没有办法我可以做到这一点?

我愿意设计一个查询,甚至改变我的表格以使查询更容易。

4

1 回答 1

0

类似于我在此处提供的答案,而不是使用否定选择来测试记录所保存的值是否与另一个数据集中的任何记录不同,更简单的方法是匹配那些与数据集相似的值并返回那些没有匹配的记录。

为此,您可以在子句中使用left joinis 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。

于 2019-04-29T22:19:32.000 回答