2014-11-25 38 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') 
相關問題