2017-05-09 76 views
0

我有一個表,其中包含字段student_number和完成標誌,其完成或未完成。Where子句測試,其中所有必須匹配

我期待寫一個WHERE子句,讓我來檢查,如果選擇3學生人數和檢查,如果他們都在各自的領域完成已經完成了,但是都必須匹配。

任何想法如何ID去呢?

+0

請提供一些示例數據,並讓我們瞭解您已經嘗試所以? – balaji

+0

所以說我選擇學號34646,57858和48482。香港專業教育學院嘗試過做WHERE學號= 34646或57858或48482,竣工=「已完成」。但是這並不意味着所有必須完成的陳述是真實的 – farrea

回答

0

也許你想這樣的事情:

where STUDENT.NUMBER in (34646, 57858, 48482) and COMPLETED = 'COMPLETED' 

(根據您的評論)

+0

那麼測試結果顯示所有3個學生號碼都完成了嗎?我將要使用一個基本上說,當所有3個完成的情況下,這樣做還有其他不完整的 – farrea

+0

,如果功能是這樣的:當STUDENT.NUMBER在(34646,57858,48482)和COMPLETED ='COMPLETED'時的情況,那麼DO_SOMETHING else DO_SOMETHING_ELSE結束 – areklipno

0
DROP TABLE T; 
    CREATE TABLE T (ID INT, COMPLETED VARCHAR(20)) 
    INSERT INTO T VALUES 
    (34646, 'COMPLETD'),(57858,'COMPLETeD'),(48482,'COMPLETED') 

    SELECT case when s.sta > 0 then 'NotAllCompleted' 
      else 'AllCompleted' 
      end 
    FROM 
    (
    SELECT SUM(CASE WHEN COMPLETED <> 'COMPLETED' AND ID IN(34646,57858,48482) THEN 1 ELSE 0 END) sta 
    FROM T 
    ) S 

--------------- 
NotAllCompleted 

(1 rows affected) 

truncate table t 
INSERT INTO T VALUES 
(34646, 'COMPLETeD'),(57858,'COMPLETeD'),(48482,'COMPLETED') 
    SELECT case when s.sta > 0 then 'NotAllCompleted' 
      else 'AllCompleted' 
      end 
    FROM 
    (
    SELECT SUM(CASE WHEN COMPLETED <> 'COMPLETED' AND ID IN(34646,57858,48482) THEN 1 ELSE 0 END) sta 
    FROM T 
    ) S 
--------------- 
AllCompleted 

(1 rows affected)