2017-11-19 5 views
0

이름 열과 날짜 열이있는 테이블이 있습니다. 나는 2006 년부터 사건을 겪었습니다. 2006 년부터 2017 년까지 매년 적어도 하나의 사건에 참석 한 이름의 목록을 어떻게 얻을 수 있습니까?MySQL을 사용하여 매년 적어도 하나의 이벤트에 누가 참석했는지 알 수 있습니까?

또한 2017을 하드 코딩하는 대신 데이터베이스에 표시된 최근 연도를 어떻게 사용할 수 있습니까?

+1

샘플 데이터와 예상되는 결과가 도움이 될 것입니다. –

답변

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 
            ); 
+0

완벽하게 작업했습니다. 감사. –