使用 MySQL,我如何知道谁每年至少参加过一次活动?
Using MySQL, how can I tell who has attended at least one event every year?
我有一个带有名称列和日期列的 table。我从 2006 年开始参加活动。如何获得从 2006 年到 2017 年每年至少参加一次活动的名单?
此外,我如何使用数据库中出现的最近年份而不是硬编码 2017?
您可以这样做:
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
);
我有一个带有名称列和日期列的 table。我从 2006 年开始参加活动。如何获得从 2006 年到 2017 年每年至少参加一次活动的名单?
此外,我如何使用数据库中出现的最近年份而不是硬编码 2017?
您可以这样做:
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
);