我在Access中有一个记录列表。我试图通过另一组值[B]上的条件过滤一组值[A]。我想检索值[A],其中相应的值[B]是某个值,并过滤掉任何值[A] s,其中存在除了特定值[B]之外的任何记录。
例如,我可能想要检索[A],其中[B]的唯一值是'5'。如果存在两个具有相同[A]值的记录,一个具有[B]值为“5”且一个具有[B]值为“7”的记录,则应排除这两个记录。如果两个记录对[A]的值相同,并且[B]的值都为'5',则应包括它们。
在下面的列表中,我可能想要检索所有[B]值等于65的[A]值。所以我希望查询返回TFL,但不是MCA,即使它有65,因为它也有非65(72)。
A |乙
MCA | 65
MCA | 72
TFL | 65PKO | 72
PKO | 89
我已经获得了具有特定值[B]的[A]列表,以及具有任何其他值[B]的[A]列表。我想我可以从第一个列表中取出出现在第二个列表中的任何值[A]。在上面的例子中,如果我按'65'过滤,第一个列表将包含'MCA'和'TFL',第二个列表将包含'MCA'和'PKO';如果我然后从第一个列表中取出出现在第二个列表中的值,我只剩下'TFL',这就是我想要的。但是,我不知道如何从一个列表中减去出现在另一个列表中的任何值。
有什么想法吗?
答案 0 :(得分:0)
您已经提供了对所需内容的良好描述,我们只需要将其转换为SQL
SELECT A FROM AndysData WHERE B=65
将为您提供所有A的列表,其中至少有一个B值为65.
SELECT A FROM AndysData WHERE B<>65
将为您提供所有A值的列表,其中B值不是65.
要从第一批中排除第二批,可以使用NOT IN子句和子查询来完成:
SELECT DISTINCT A FROM AndysData
WHERE
B=65
AND
A NOT IN (SELECT A FROM AndysData WHERE B<>65)