SQL 구문에서 중복된 값을 배제하고 고유의 값을 가져오고 싶을 경우 Distinct 를 사용합니다. 이와 비슷한 의미로 Group by 구문이 있는데 간단하게 예제 구문만 비교하고 추후 포스팅에서 설명하기로 하겠습니다.
데이터베이스에 데이터를 저장하다 보면 중복되는 값이 종종 들어갑니다. 예를들어 회원의 정보를 입력받고 저장되는 구문을 프로그래밍 할 경우 이름의 중복이 있을수도 있고, 나이의 중복이 있을수도 있습니다. 그외 여러가지 경우가 있는데 그럴때 중복된 데이터를 배제하고 데이터를 가져오고 싶을경우
select DISTINCT name from member;
위 처럼 데이터베이스에 명령을 하면 됩니다.
위의 명령을 아래의 "member" 테이블에 적용시키면
id |
user_id |
user_pwd |
name |
age |
phone |
|
1 |
test1 |
1111 |
홍길동 |
25 |
010-1111-1111 |
|
2 |
test2 |
2222 |
임꺽정 |
45 |
010-2222-2222 |
|
3 |
test3 |
3333 |
이철수 |
34 |
010-3333-3333 |
|
4 |
test4 |
4444 |
김영희 |
28 |
010-4444-4444 |
|
5 |
test5 |
5555 |
이철수 |
34 |
010-5555-5555 |
|
6 |
test6 |
6666 |
김영희 |
54 |
010-6666-6666 |
|
7 |
test7 |
7777 |
이순신 |
32 |
010-7777-7777 |
|
8 |
test8 |
8888 |
이해신 |
23 |
010-8888-8888 |
|
9 |
test9 |
9999 |
박찬호 |
39 |
010-9999-9999 |
김영희
박찬호
이순신
이철수
이해신
임꺽정
홍길동
처럼 중복된 이철수, 김영희를 제외하면서 한명으로 인식하고 출력됩니다.
위에서 group by 에 관해 잠깐 설명했었는데 group by 의 경우
select name from member group by name asc;
select name from member group by name desc;
group 말 그대로 그룹을 지어라는 의미입니다. 그래서 그룹끼리 묶이게 되는 것이죠. 그리고 asc, desc (내림차순, 오름차순) 는 정렬을 어떻게 할지에 대한 구문입니다. 이 부분도 추후 더 상세히 포스팅하겠습니다.
어쨋든 Distinct는 중복을 제거하고 고유한 값만 가져오는 함수이며,
Group by 는 그룹을 지어서 가져오는 함수 입니다. 우선 여기까지만 설명하고 추후 Group by 포스팅에서 더 상세히 설명하겠습니다.
'SQL' 카테고리의 다른 글
SQL AND OR 구문 (0) | 2013.08.14 |
---|---|
SQL WHERE 구문 (0) | 2013.08.13 |
SQL Select 구문 (0) | 2013.08.09 |
SQL 기본 구문 (0) | 2013.08.08 |
SQL 소개 (0) | 2013.08.07 |