2015-07-10 107 views
1

我有一個看起來像一個SQL表:SQL鮮明問題

email    User_id Category 
[email protected] 44 Sent_Emails 
[email protected] 44 Sent_Emails 
[email protected] 44 Undeliverable 
[email protected] 50 Sent_Emails 
[email protected] 56  Sent_Emails 

和我期待的,看起來像一個輸出:

email    User_id Category 
[email protected] 50 Sent_Emails 
[email protected] 56  Sent_Emails 

主要是我不希望看到任何電子郵件,被標記爲「未交付」。我嘗試使用不同的,但它仍然給我行以「[email protected]

Appreciate your support. 

Thanks 
+0

你要一個,兩個或零行莎拉? –

+0

我認爲仍然建議使用DISTINCT,Sent_Emails類別也可以有重複的 – Zsuzsa

+0

@BrianDolan - 我不想看到Sarah的記錄,因此Zsuzsa,Park Broom和Gordon Linoff的建議都很完美。非常感謝您的支持。 – Deepayan

回答

3

我想你想是這樣的:

select t.* 
from sqltable t 
where not exists (select 1 
        from sqltable t2 
        where t2.email = t.email and t2.category = 'Undeliverable' 
       ); 
+0

戈登你太快了! – FirebladeDan

+0

真棒....非常感謝:) – Deepayan

+0

NOT IN的性能比NOT EXISTS命令的性能要好。但是這兩種解決方案都可以正常工作 – Zsuzsa

3

試試這個SQL語句:

SELECT * FROM your_table WHERE User_id NOT IN (SELECT User_id FROM your_table WHERE Category = 'Undeliverable') 
+0

真棒....非常感謝:) – Deepayan

+0

我認爲它仍然建議使用DISTINCT以及Sent_Emails類別可以有重複 – Zsuzsa

1
SELECT DISTINCT * 
FROM your_table 
WHERE User_id NOT IN (SELECT User_id FROM your_table WHERE Category = 'Undeliverable')