2016-12-13 36 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多一点 :) –

相关问题