2017-09-08 3 views
1

첫 번째 레코드를 제외한 모든 중복 레코드를 제거하고 싶습니다.SQL의 첫 번째 레코드를 제외한 중복 레코드 제거

등 :

NAME 
R 
R 
rajesh 
YOGESH 
YOGESH 

이제 위에서 나는 두 번째 "R"두 번째 "인 Yogesh"를 제거합니다.

이름이 "NAME"인 열이 하나뿐입니다.

SELECT DISTINCT name 
FROM mytable 
+2

고유 값을 제거하거나 선택 하시겠습니까? –

+0

첫 번째 제외하고 중복 만 제거합니다. –

+1

동일하면 첫 번째인지 아닌지 어떻게 알 수 있습니까? 그리고 그것은 정말로 중요합니까? 그리고 하나의 컬럼 만 가지고 있기 때문에 테이블이 정렬되지 않은 세트이기 때문에 첫 번째 컬럼이 없습니다. –

답변

5

는 CTE를 사용 (내가 생산이 몇 가지 있습니다) : 간단한 distinct 수정이 트릭을 할 것 같은

+0

2보다 많은 경우 where 술어를> 1로 변경하십시오. –

+0

@SeanLange 틀림없이 정확합니다. – Eli

+0

@Eli 귀하의 도움에 감사드립니다. –

3

보인다.

;WITH duplicateRemoval as (
    SELECT 
     [name] 
     ,ROW_NUMBER() OVER(PARTITION BY [name] ORDER BY [name]) ranked 
    from #myTable 
    ORDER BY name 
) 
DELETE 
FROM duplicateRemoval 
WHERE ranked > 1; 

설명 다음 CTE는 당신의 모든 레코드를 잡고 각각의 고유 한 항목에 대한 행 번호를 적용합니다. 각 추가 항목은 증가하는 숫자를 갖습니다. 무엇이 수행되는지 확인하려면 을 SELECT *으로 바꿉니다.

관련 문제