2017-10-15 19 views
-2

我知道使用CASE時,它會選擇它可以實現的第一個值。但是,如果有重複,如果不重複,我想首先獲取具體的值,然後選擇其他值。在遇到重複項時使用CASE獲取所需行

例如,如果我的表看起來像這樣:

date  email  ordered 
1/1/17 email_1  N 
3/1/17 email_1  Y 
1/1/17 email_2  Y 
1/1/17 email_3  N 

什麼,我想是這樣的:

date  email  ordered 
3/1/17 email_1  Y 
1/1/17 email_2  Y 
1/1/17 email_3  N 

我當前的查詢看起來像以下,但它無法正常工作由於先找到它,CASE因爲email_1而給我'N'

CASE WHEN下令= 'Y' 然後命令ELSE 'N' END

誰能幫助我解決這個問題?

回答

0

要獲得所需的結果,您可以使用聚合字符串函數從聚合結果集中選取單個值。

select 
substring_index(group_concat(`date` order by ordered desc),',',1) `date`, 
email, 
substring_index(group_concat(`ordered` order by ordered desc),',',1) `ordered` 
from demo 
group by email 

從您的文章我假設你想選擇單個記錄每個電子郵件和優先級將給予責令=「Y」。

DEMO

相關問題