Tuesday, September 22, 2009

6. DISTINCT 문을 이용한 중복의 제거


6. DISTINCT 문을 이용한 중복의 제거

웃챠 오늘은 새벽 두시 이군요. 어김없이 오늘도 하나의 강좌글을 쓰겠다는 제 자신과의

약속으로 졸린 가운데 키보드를 두들 깁니다.

 

이번에 소개해드릴 내용은 중복의 제거 입니다.

 

이 키워드는 바로 distinct 입니다. 

SELECT au_id
FROM titleauthor

 

이 질의를 실행해 보세요.

25개의 데이터가 들어 있을 겁니다.

문제는? 중복되는 녀석이 존재 한다는 거지요.

이 녀석들에 대해 중복을 제거해 보자는 겁니다.

 

이때 사용하는 키워드는 중복의 제거인 DISTINCT 입니다.

SELECT DISTINCT au_id
FROM titleauthor

 

 

자 그렇다면?

하나의 컬럼으로 보면 여러개의 로우가 중복되어 있는데..여러개의 컬럼에서

본다면? 로우의 값들이 고유 합니다. 그럼 어떻게 될까요?

돌려 보면?

SELECT *
FROM titleauthor

 

질의를 수행 하시면? 여러개의 컬럼들이 리턴 될겁니다.

로우들의 데이터를 죽 보시면? 중복되는 것이 하나도 없지요. 바로...

SELECT DISTINCT *
FROM titleauthor

 

이렇게 수행 하셔도 같은 결과가 된다는 의미 입니다.

왜인지는 아실 겁니다.

모든 컬럼의 로우들을 비교하면? 중복값이 없기 때문이지요.

 

이 사용에 대해 주의 하셔야 하며..

두번재로 text데이터 형에서는 dsitinct가 불가 합니다.

use northwind
go

select description from Categories

 

northwind라는 샘플 데이터베이스의 categories 테이블은? 데이터형이 text형으로 되어

있습니다. 이곳에 대해

use northwind
go

select distinct description from Categories

 

하시면?

 

결과-----------------------------------------------------------------

서버: 메시지 8163, 수준 16, 상태 3, 줄 2
text, ntext 또는 image 데이터 형식은 DISTINCT로 선택할 수 없습니다.

라는 메세지가 뜨게 됩니다.

이해가 되시는지요...

 

세번째로 NULL 이라는 값이 지정되는 않을 경우는 여러개의 NULL이 있더라도?

하나의 NULL만 dsitinct의 결과에 나타나게 됩니다.

 

그럼 이정도로 distinct의 이야기는 접도록 하지요.

이는 종종 실제 업무에서 사용을 한 경험이 있습니다.

코난이는 종종 다른회사에서 주는 데이터를 가지고 가공 처리해 솔루션을 구축하는

외주 업무를 주로 많이 했었는데...

업체에서 넘겨주는 데이터가 엉망일 경우가 많습니다.

이럴때 가공 처리를 위해 종종 distinct를 사용 하지요....

간단하지만 몇몇 제약이 있는 distinct 잘 이해 되셨으리라 생각 합니다.

그럼 이만.


6. DISTINCT 문을 이용한 중복의 제거 문서의 끝입니다.

 

저작권 : 이 홈페이지의 내용은 모두 자유롭게 사용하실 수 있습니다.

No comments: