我有一个名为column and date column的表。我从2006年开始参加活动。如何获得2006年至2017年每年至少参加过一次活动的名单?
此外,我不是使用2017年的硬编码,而是如何使用数据库中出现的最近年份?
答案 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
);