Microsoft Access:根据特定条件排除1的记录

时间:2015-04-23 19:51:54

标签: ms-access-2010

我有一张桌子。我想开发一个查询,如果ID有多个记录,则过滤掉Dog记录。如果该ID只有1条记录,则保留狗的记录。

ID  | AnimalType
401 | Dog
401 | Cat
401 | Bird
402 | Dog
403 | Cat
404 | Dog
404 | Bird

查询结果将是......

ID | AnimalType
401| Cat
401| Bird
402| Dog
403| Cat
404| Bird

2 个答案:

答案 0 :(得分:1)

以下是实现此目的的一种方法:

SELECT A.ID, A.AnimalType
FROM tblAnimals A
INNER JOIN ( SELECT ID, COUNT(1) as IDCount FROM tblAnimals GROUP BY ID ) T
  ON A.ID = T.ID
WHERE NOT (T.IDCount>1 and A.AnimalType='Dog')

基本思想是在子查询中获取每个记录ID的计数,然后如果“动物是狗并且该ID有多个记录”,我们可以应用过滤掉案例的确切逻辑。 / p>

演示: http://www.sqlfiddle.com/#!6/db6a9/2 (在SQL Server中,不是Access,但逻辑相同)

答案 1 :(得分:1)

实现此目的的另一种方法是在您查看狗记录时使用NOT EXISTS函数来确定是否存在同一ID的其他动物:

SELECT ID, AnimalType
FROM Animals t1
WHERE AnimalType <> 'Dog' Or NOT EXISTS ( SELECT ID FROM Animals t2 WHERE t2.ID = t1.ID And AnimalType <> 'Dog' );