2014-11-11 3 views
1

테이블에 다음 데이터가 있습니다.두 개의 열을 사용하여 테이블에서 고유 값 선택

Id Name 
1 Abc 
2 Abc 
3 Xyz 
4 Xyz 
5 def 
6 def 

나는

Id Name 
1 Abc 
2 Xyz 
3 def 

내가 이름 열에서 중복을 피하려는 쿼리에서 다음과 같은 결과를 원한다.

도움을 주시면 대단히 감사하겠습니다.

Select distinct 
    id, name 
from table A 

은 다른 값을 가지고 있기 때문에 작동하지 않습니다.

+1

원하는 출력이 의미가 없습니다. ID 2는 Xyz와 연결되어 있지만 원본 데이터에는 Abc와 연결되어 있습니다. 마찬가지로 ID 3 및 def. 검색어의 목적은 무엇입니까? – RedGreenCode

+0

Xyz가 3과 일치하고 5로 정의되어 있지 않습니까? – jmoreno

답변

2

대신에 그룹을 사용하십시오. 당신이 테이블의 무결성을 깰 경우의 예에서, Xyz에 해당하는 ID를 그래서이 다음 Xyz에를 받고, 3, 4를 것을

select 
    min(id), [name] 
from 
    tableA 
group by [name] 

주에만 가능합니다.

SELECT row_number() OVER (ORDER BY min(id)) id, 
     name 
    FROM tableA 
group by name 
+0

감사합니다. row_number 쿼리가 필요한 것입니다. – pmh

0

당신은 사용하여 특정 결과를 얻을 수 있습니다 : 당신은 단지 IDS 옆에 자동 번호를 찾고 있다면 당신은이 작업을 수행 할 수 있습니다

select row_number() over (order by min(id)) as id, name 
from table A 
group by name; 

을 행 번호 다시 매기기 이상한 보이지만 row_number() 할 것 그.

관련 문제