2017-12-06 2 views
0

다음 쿼리를 실행하려고합니다. 나는 중복이 없기를 기대한다. 하지만 결과 집합에서 중복 된 레코드가 나타납니다. 나는 SQL에 익숙하지 않다.SQL 중복 된 중복 레코드 사용

SELECT DISTINCT pr.id as ruleid, pr.alias as rulename,grp.id as groupId, grp.alias, fgp.filterGroupType FROM ProcessingService s INNER JOIN s.fileGroupingParameter fgp ON fgp.status =:fileGroupStatus INNER JOIN s.svcPathList path ON path.status =:pathStatus INNER JOIN path.policy p ON p.status =:policyStatus INNER JOIN p.policyGroupRelSet pgr INNER JOIN pgr.group grp ON grp.status =:groupStatus INNER JOIN grp.policyGroupRuleRelSet rr INNER JOIN rr.policyRule pr ON pr.status =:ruleStatus INNER JOIN pr.policyActionSet pa ON pa.status =:actionStatus WHERE s.id in (:idList) AND pa.action =:actionType AND s.status =:serviceStatus AND fgp.filterGroupType ='Rulewise' AND pr.category =:reasonCategory AND pr.severity =:reasonSeverity 

내 요구 사항에 따라 고유 한 레코드를 얻을 수있는 방법.

내가 무엇입니까 결과 세트는

"policy rule1" 
"policy rule1" 
"policy rule12" 
"policy rule12" 

내가 원하는 : 출력으로

"policy rule1" 
"policy rule12" 

.

+0

다른 항목을 포함하는 경우 필요한 열만 선택하고 다른 열은 열이 아닌 전체 행에 적용됩니다. –

+0

매우 이상한 쿼리는 많은 열을 선택하지만 그 결과에는 하나의 열만 포함됩니다. – jarlh

답변

0

Distinct는 하나의 열뿐만 아니라 전체 열 세트에도 적용됩니다. 하나의 열에 중복이 생기면 세트의 다른 열에 고유 한 값이 있음을 의미합니다. 이러한 고유 한 값이 필요한지 여부를 결정해야합니다. 불필요한 열을 제거하거나 일부 논리를 기반으로 필요한 행을 선택해야합니다.