2014-11-25 59 views
2

我想出一个SQL查询到Access数据库。下面是一个示例表,这将有助于解释我遇到的问题:SQL查询选择一个标准,如果第二个条件是假的

ID  Status 
------------- 
123 Pass 
123 Fail 
456 Pass 
789 Pass 
789 Fail 
012 Fail 

我想拉它有一个Status=Pass但没有Status=Fail所有ID的。

从上表

所以,这将被拉动的唯一记录是:

456 Pass 
+2

欢迎StackOverflow上:如果您发布的代码,XML或数据样本,*请*突出显示文本编辑器的线,然后点击编辑器工具栏上的“代码示例”按钮(“{}”)可以很好地进行格式化和语法突出显示!那么你不需要任何那些杂乱的'
'标签,要么! – 2014-11-25 10:30:34

回答

1
SELECT DISTINCT ID, Status 
FROM table 
WHERE ID NOT IN (SELECT ID FROM table WHERE Status = 'Fail') 
    AND Status = 'Pass' 

小评:AND Status = 'Pass'不需要在这种情况下,因为只有两种状态,如果第一条件是真的,第二个也是如此(tautology),但我决定离开它,以更好地指示。

It works.

-1
SELCT * FROM table WHERE status = 'Pass' AND 
id NOT IN (SELECT id FROM table WHERE status ='Fail') 
+1

您能否添加一些附加信息以及答案? – Max 2014-11-25 10:53:09

0

使用NOT EXISTS断言:

SELECT * 
FROM tablename AS t1 
WHERE t1.Status ='Pass' 
AND NOT EXISTS (SELECT 1 
       FROM Tablename AS t2 
       WHERE t1.Id = t2.ID AND t2.status = 'Fail') 
相关问题