使用MySQL,我怎样才能告诉谁每年至少参加过一次活动?

时间:2017-11-19 15:51:59

标签: mysql sql relational-division

我有一个名为column and date column的表。我从2006年开始参加活动。如何获得2006年至2017年每年至少参加过一次活动的名单?

此外,我不是使用2017年的硬编码,而是如何使用数据库中出现的最近年份?

1 个答案:

答案 0 :(得分:1)

您可以这样做:

select name
from t
group by name
having count(distinct year(date)) = (select count(distinct year(date))
                                     from t
                                    );

这将选择在您拥有事件记录的所有年份中参加过活动的用户。

如果您特别想要所有年份 - 即使是当年没有事件,那么:

select name
from t
group by name
having count(distinct year(date)) = (select 1 + year(curdate()) - year(min(date)) + 1
                                     from t
                                    );