2013-10-11 4 views
0

예 1 :SQL 선택 고유 행

IDENT | CURRENT | SOURCE 
12345 | 12345 | A 
23456 | 12345 | B 
34567 | 12345 | C 

예 2 : 3 열, IDENT, 현재 및 소스

IDENT | CURRENT | SOURCE 
56789 | 56789 | A 

표. 나는 단지 하나의 유일한 CURRENT 레코드와 IDENT = CURRENT (예 2)가있는 레코드에 * 표시 할 쿼리를 작성하려고합니다. 동일한 CURRENT이지만 IDENT가 다른 레코드 (예 1) 인 경우 레코드에서 결과를 생략해야합니다. IDENT = 현재 내가 사용 어떻게 든 필요하면 확실하지 예 1과 유사한 결과가 표시된다

현재의 모든 쿼리

나는 시도하고 WHERE CURRENT COUNT =

+0

"현재 IDENT = CURRENT 인 모든 현재 쿼리는 예제 1과 비슷한 결과를 표시합니다." 예 1에서 두 번째 및 세 번째 레코드 IDENT! = CURRENT. 그들이 어떻게 보이고 있는가? – AgRizzo

답변

0
select * from table 
where ident=current 
and current in (select current from table group by 1 having count(*)=1) 

또는 하위 쿼리없이 1

select 
min(ident) as ident, 
current, min(source) as source 
from table 

where ident=current 
group by current 
having count(*)=1 
0
SELECT M.* 
FROM Table1 AS M 
WHERE M.IDENT = M.CURRENT 
AND (
     SELECT COUNT(*) 
     FROM Table1 AS S 
     WHERE M.IDENT = S.IDENT 
     AND M.CURRENT = S.CURRENT 
    ) = 1