2017-03-15 3 views
0

이 예제에서는 바나나와 오렌지색에 연결된 고유 ID 만 찾는 방법이 있습니까? 따라서이 경우 결과는 ID 2와 3이됩니다 (사과도 있기 때문에 4가 아닙니다).다른 행의 값을 기반으로 한 고유 한 결과

id  fruit 

1  apple 
1  banana 
2  banana 
2  orange 
3  banana 
3  orange 
4  apple 
4  banana 
4  orange 
+0

과일의 세 가지 값만 있습니까? –

+0

예,이 세 가지 과일 만 있습니다. – spiridon

답변

1

다음 진술이 적용됩니다.

SELECT DISTINCT ID 
FROM Table1 
WHERE ID NOT IN (SELECT DISTINCT ID 
       FROM Table1 
       WHERE fruit NOT IN ('banana', 'orange')); 
+0

이 쿼리는이 경우 네 개의 ID를 모두 가져옵니다. 바나나와 오렌지가있는 곳에서만 ID가 필요합니다. – spiridon

+0

죄송 합니다만 제 질문을 편집합니다 – Zelldon

+0

감사합니다! – spiridon

0

사용이

SELECT * 
FROM 
    (SELECT id 
    FROM tbl 
    WHERE fruit IN ('banana','orange') 
    GROUP BY id 
    HAVING count(*)=2) t1 
WHERE t1.id NOT IN 
    (SELECT id 
    FROM tbl 
    WHERE fruit NOT IN ('banana','orange') 
    GROUP BY id) 

첫 번째 파생 테이블 T1은 모두 3과 2, 3, 4를 줄 것이다 1 바나나와 오렌지의 각이있다. 이제 두 번째 하위 쿼리로 4 개를 제거 할 수 있습니다. 바나나 또는 오렌지가 아닌 1 개의 과일이 있으므로 ID를 반환합니다.

관련 문제