我正在尝试创建一个仅选择一组值但不包括其他值的查询。
我选择的列称为“参与者”,其中的值不是单个文本项,而是由逗号分隔的项目列表(长度和项目数量不同),例如:“Alpha、Delta、Eta”或值:“Beta、Gamma 或值:“Delta、Beta、Epsilon、Theta、Vau”。
我编写此查询以尝试获取仅包含 Delta、Eta、Epsilon 和 Vau 等值但不包含 Alpha、Beta、Gamma 的结果(这意味着我不希望值:“Alpha, Delta, Eta”包括在内,但我想要以下值:“Delta,Zeta,Epsilon”)
SELECT DISTINCT Name, Category, CODE, Participants
WHERE(Participants NOT LIKE '%Alpha%'
OR Participants NOT LIKE '%Beta%'
OR Participants NOT LIKE '%Gamma%')
AND (Participants LIKE '%Delta%'
OR Participants LIKE '%Eta%'
OR Participants LIKE '%Epsilon%'
OR Participants LIKE '%Vau%');
结果包括查询的 LIKE 部分中指定的所有值,但 NOT LIKE 似乎不起作用,因为我不断收到以下结果:“Alpha,Eta,Epsilon。
我可以在 Access 中创建多个查询以使用 LIKE 查询然后使用 NOT LIKE 进行过滤,但我想找到一种在单个查询中执行此操作的方法。
在线我只能找到查询中有一个 LIKE 和一个 NOT LIKE 的示例
有人可以提出解决方案吗?
在评估 NOT LIKE 时的查询中,您应该使用 AND 而不是 OR,因为您希望满足所有这些条件。
这与您希望任何值都是在使用 AND 时选择的 LIKE 值的后续条件形成对比。
或者,您可以改写为:
如果您可以将这些条件放入表变量或表值参数中,则查询会变得更加简单: