티스토리 뷰
▶▶ DISTINCT 키워드
– "중복된 값"을 자동으로 "제거"해주는 키워드.
– SELECT절의 모든 요소에 대해 일괄 중복값을 제거하는 형태로 동작.
– 여러 컬럼 요소들에 대한 중복값 제거는, 컬럼 목록의 값이 모두 일치한 경우에만 중복값으로 인정하고 제거함.
– 컬럼의 값들 중 하나라도 다른 값이 있는 경우, 해당 값을 개별값으로 보고 중복값으로 인정하지 않음.
EX1 ) 하나의 컬럼 사용
mysql> SELECT DISTINCT department_id
-> FROM employees;
+---------------+
| department_id |
+---------------+
| NULL | // 소속부서 없는 사람
| 10 |
| 20 |
...
| 80 |
| 90 |
| 100 |
| 110 |
+---------------+
→ 각 사원의 소속부서를 모두 알기보다는 부서 id만 알고 싶을 때 사용 (중복제거)
EX2 ) 두 컬럼이상 사용
mysql> SELECT DISTINCT department_id, job_id
-> FROM employees;
+---------------+------------+
| department_id | job_id |
+---------------+------------+
| 90 | AD_PRES | // 90번 부서의 AD_PRES
| 90 | AD_VP | // 90번 부서의 AD-VP // job_id의 값이 다름, 중복값이 아님!
| 60 | IT_PROG |
...
| 40 | HR_REP |
| 70 | PR_REP |
| 110 | AC_MGR |
| 110 | AC_ACCOUNT |
+---------------+------------+
→ 두 컬럼을 쌍으로 묶어서 봐야 함, 두 컬럼 값 모두 동일한 중복값만 제거함.
Q1 ) employees 테이블로부터 employee_id, last_name, job_id, hire_date를 출력하되,
컬럼 제목을 각각 Emp #, Employee, job, Hire Date로 지정하여 출력하시오.
A1 )
mysql> SELECT employee_id AS "Emp #", last_name "Employee",
-> job_id job, hire_date "Hire Date"
-> FROM employees;
+-------+-------------+------------+------------+
| Emp # | Employee | job | Hire Date |
+-------+-------------+------------+------------+
| 100 | King | AD_PRES | 1987-06-17 |
| 101 | Kochhar | AD_VP | 1989-09-21 |
| 102 | De Haan | AD_VP | 1993-01-13 |
...
| 204 | Baer | PR_REP | 1994-06-07 |
| 205 | Higgins | AC_MGR | 1994-06-07 |
| 206 | Gietz | AC_ACCOUNT | 1994-06-07 |
+-------+-------------+------------+------------+
107 rows in set (0.00 sec)
→ column alias 설정시, mysql은 큰따옴표"" 없이 대소문자 구별 가능.
근데 오라클에서는 아님, 되도록 대소문자 구분은 큰따옴표"" 사용.
→ # '샵' 보다는 '해시태그'라고 읽기
Q2 ) employees 테이블로부터 사원들이 담당하고 있는 업무 리스트를 출력하시오.
A2 )
// 사원들이 담당하고 있는 업무 리스트 출력 → job id
// 모든 사원들의 업무 리스트는 중복 업무값이 발생 → DISTINCT로 중복값 제거
mysql> SELECT DISTINCT job_id
-> FROM employees;
+------------+
| job_id |
+------------+
| AC_ACCOUNT |
| AC_MGR |
| AD_ASST |
...
| SH_CLERK |
| ST_CLERK |
| ST_MAN |
+------------+
19 rows in set (0.00 sec)
'DB > MySQL' 카테고리의 다른 글
논리 연산자 (AND / OR / NOT) (0) | 2023.02.01 |
---|---|
비교 연산자(between A and B / IN / LIKE / IS NULL) (0) | 2023.02.01 |
WHERE(조건문)절 / 비교 연산자(관계) (0) | 2023.02.01 |
SELECT 구문 / 표현식 / null값이란? / Column Alias (0) | 2023.01.31 |
SQL이란? / mySQL 사용 순서 (0) | 2023.01.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 오버라이딩
- jsp
- DB
- null
- Dao
- mysql
- 업캐스팅
- 로컬저장소
- javascript
- model2
- 내장객체
- 데이터타입
- 제어문
- Method
- Java
- 숫자형
- 문자형
- 출력문
- 단일행함수
- Object
- JSTL
- 매개변수
- 다형성
- 논리형
- 인자
- Git
- gitbash
- github
- 원격저장소
- 주석문
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함