테이블 중복값 제거하는 쿼리만드느라 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
'Development > 삽질의 추억' 카테고리의 다른 글
fclose()없이 fopen()으로 열 수 있는 파일 객체 수 (0) | 2011.08.13 |
---|---|
fatal error C1010 (0) | 2011.08.13 |
CreateFile/CloseHandle을 반복적으로 사용할때... (0) | 2011.08.13 |
CreateFile(), WriteFile() 사용 시 파일 끝에서 부터 쓰기 (0) | 2011.08.13 |
CDatabase, CRecordset 사용해서 ODBC 연결 시 레코드셋 바인딩(MFC) (0) | 2011.08.13 |