据我所知,在使用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
'N'
因为先找到email_1
NamesTable
而无效,因此无效。
CASE WHEN ordered ='Y'然后命令ELSE'N'END
任何人都可以帮我解决这个问题吗?
答案 0 :(得分: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
从您的帖子中我假设您想为每封电子邮件选择一条记录,并优先考虑ordered ='Y'。