2016-12-13 37 views
0

我有一個表incoming,其中包含電子郵件列表及其附件。SQL select其中id ='x'的所有記錄的狀態爲'y'

我導入每個附着物的,並對其進行處理,此時作爲5

當個人的電子郵件中的所有行被標記爲5該行被標記的話,我可以移動/刪除的電子郵件,因爲它已被正確處理。

不過,我掙扎寫一個SQL查詢是選擇msg_uid,因爲具有相同msg_uid所有行的5

例表

----------------------------------------------------- 
| id | STATUS | i2d_id | msg_uid | i2d_msg   | 
----------------------------------------------------- 
| 16 | 5  | 98390 | 53  | Result is ready. | 
----------------------------------------------------- 
| 17 | 3  | 98391 | 53  | Result is ready. | 
----------------------------------------------------- 
| 18 | 5  | 98392 | 53  | Result is ready. | 
----------------------------------------------------- 
| 19 | 3  | 98393 | 53  | Result is ready. | 
----------------------------------------------------- 
| 20 | 5  | 98394 | 53  | Result is ready. | 
----------------------------------------------------- 

狀態這不會允許我刪除的電子郵件(有些人狀態3

----------------------------------------------------- 
| id | STATUS | i2d_id | msg_uid | i2d_msg   | 
----------------------------------------------------- 
| 16 | 5  | 98390 | 53  | Result is ready. | 
----------------------------------------------------- 
| 17 | 5  | 98391 | 53  | Result is ready. | 
----------------------------------------------------- 
| 18 | 5  | 98392 | 53  | Result is ready. | 
----------------------------------------------------- 
| 19 | 5  | 98393 | 53  | Result is ready. | 
----------------------------------------------------- 
| 20 | 5  | 98394 | 53  | Result is ready. | 
----------------------------------------------------- 

會成功。

回答

4
SELECT msg_uid 
FROM yourTable 
GROUP BY msg_uid 
HAVING COUNT(*) = COUNT(CASE WHEN STATUS = 5 THEN 1 END) 
+0

因爲雖然@Lamak答案工程爲我考慮了一個作爲答案好吧,我覺得這個更可讀(稍微容易理解) –

2

此查詢會讓同比找到每一個結果,所有的STATUS值是5特定msg_uid

SELECT * 
FROM incoming i 
WHERE NOT EXISTS(SELECT 1 FROM incoming 
       WHERE msg_uid = i.msg_uid 
       AND `status` <> 5); 
+0

可能'SELECT DISTINCT msg_uid'更適合OP請求。 –

+0

我將問題解釋爲詢問每一行。但是,如果op需要每個不同的'msg_uid'而沒有別的,那麼是的,'SELECT DISTINCT msg_uid'就是這樣做的方式 – Lamak

+0

@Lamak - 謝謝你的答案 - 它可以工作,但我覺得我可以理解其他答案a多一點 :) –

相關問題