SQL
SELECT t.id
FROM TABLE t
WHERE t.year in(2001,2002,2003)
GROUP BY t.id
샘플 SqlFiddle
http://sqlfiddle.com/#!2/4ec9f/2/0
설명 당신은 당신의 데이터 만 표시 행으로 설정 필터링 할
특정 년, 그래서 당신은 where 절에 넣어 무엇입니까 WHERE t.year in(2001,2002,2003)
.
단일 ID는 여러 해가 될 수 있으므로 결과 집합에는 중복이 포함될 수 있습니다. 중복을 제거하려면 GROUP BY ID를 사용하거나 DISTINCT 문을 사용하여 고유 한 요소 만 표시하십시오.
UPDATE
는 의견을 바탕으로, 여기에만 모두 3 년이 아이디의를 표시하는 버전입니다. 우리는 DISTINCT t.YEAR
을 사용하여 아마도 1 년이 여러 번 반복되는 ID 계산을 피합니다. HAVING COUNT(DISTINCT t.YEAR) = 3
부분에는 3 년 동안 보유하고있는 ID 만 포함됩니다.
SELECT t.id
FROM years t
WHERE t.year in(2001,2002,2003)
GROUP BY t.id
HAVING COUNT(DISTINCT t.YEAR) = 3
3의 ID가 만 ID에 대해 고유 한 년 수를 계산 논리를 자랑하는 2003 개의 행이 데이터 세트를 포함
sqlFiddle을 업데이트했습니다.
정말 DISTINCT 만 사용해야합니다. 매뉴얼을 참조하십시오. 일부 제 3 자 웹 사이트가 아닙니다. – Kermit
@FreshPrinceOfSO 나는 사람들이 반환 된 데이터를 이해하지 않고 항상 사용하는 것을 보았 기 때문에'DISTINCT '를 사용하지 않는 경향이 있습니다. 종종 나쁜 조인 때문에 중복을 제거하는 데 사용되는 것을 본 적이 있습니다. 하지만 네 말이 맞다.이 경우 DISTINCT가 적절했을 것이다. 어느 사이트를 추천하십니까? 빠른 참조로 techonthenet을 자주 사용했습니다. – Jerry
안녕하세요 Jarek, 답장을 보내 주셔서 감사합니다. 이것은 나를 위해 작동하지 않는 것 같습니다. 테스트 데이터에 더 많은 행을 포함한다고 가정 해보십시오. 3 (Id) 2003 (year) .. 나는 내 결과의 일부로 3 (id)을 좋아하지 않는다. 나는 단지 (2001 년과 2002 년과 2003 년) 이드 (들)을 원한다. – avg998877