2014-09-15 4 views
1

표 테스트 선택 :하나 개의 값이 아닌 다른

id  cd 
1  P 
2  P 
2  S 
3  S 

내가 cd = 'S'하지 cd = 'S' and cd = 'P'을 가지고 하나가있는 경우에만 행을 선택 할 쿼리를 작성하고자합니다.

WHERE 절에 cd을 사용하고 있습니다.

그래서,이 시나리오에서 쿼리는 ID 번호를 반환 3.

답변

1
SELECT * 
FROM <TABLE> 
WHERE CD='S' AND ID NOT IN(SELECT ID FROM <TABLE> WHERE CD='P') 
+0

감사합니다 : 당신이 가입 사용할 수 있습니다 또는

SELECT * FROM test T WHERE cd = 'S' AND 0=( SELECT COUNT(*) FROM test B WHERE B.cd = 'P' AND B.id = T.id ) 

. 나는 존재하지 않는 버전도 고안했지만 더 빠르지 만 당신의 대답은 나를 도왔습니다. SELECT * CD가 = 'S' AND NOT 존재 T

FROM ( SELECT
FROM WHERE CD = 'P' AND 식 T.id ) ; –

0

와 함께 당신은 시도 할 수 있습니다 :

SELECT * FROM test A LEFT JOIN test B ON 
    A.id = B.id AND 
    B.cd = 'P' 
WHERE B.cd IS NULL AND A.cd = 'S'; 
관련 문제