테이블 중복값 제거하는 쿼리만드느라 30분간 삽질했다...

 

DISTINCT 사용 시 각 필드별 유니크한 값이 나올 경우 어떻게 처리해야하는지 아래를 참고...

 

============================================================================================

 

  col1 col2 col3
row1 a 1 0
row2 a 1 9
row3 b 2 0
row4 b 2 9
row5 c 3 0

 

위와 같은 테이블이 존재할 경우

 

1) 

select distinct col1 from table 

 

결과

a

b

c

 

2)

select distinct col1, col2 from table

 

결과

a    1

b    2

c    3

 

3)

select distinct col1, col2, col3  from table

 

결과

a         1        0

a         1        9

b         2        0

b         2        9

c         3        0

 

 

3)번 쿼리 결과의 이유는 DISTINCT 는 하나의 ROW 값의 유니크한 데이터를 가져오기 때문에 각 컬럼의 데이터들을 더했을 경우 각각의 ROW값이 유니크한 데이터가 되기 때문에 그렇다.

 

그러므로 기준이 되는 필드의 중복을 제거한 한개의 데이터를 확인하고 싶을 경우 기준이 되는 데이터를 정하고 나머지 필드가 그 기준이 되는 데이터에 따라 각각 다른 데이터를 가질경우 나머지 값이 어떠한 기준으로 뿌려질지 결정해 주어야 한다.

 

4) 

SELECT
DISTINCT COL1, MAX(COL2), MAX(COL3)

FROM TABLE
GROUP BY COL1

 

결과

a         1        9

b         2        9

c         3        0

안정적인 DNS서비스 DNSEver DNS server, DNS service
Posted by 키르히아이스
,