DB(MySQL) - DISTINCT
DISTINCT 키워드
갑자기 DISTINCT ?
Programmers Essiontials SQL 강의를 듣고 과제를 풀면서 DISTINCT를 이용해서 문제를 풀었다. 집계함수인 COUNT
함수안에 DISTINCT
를 사용해서 중복되지 않은 컬럼값의 갯수를 구했다.
그런데 나는 DISTINCT
가 함수인줄 알고 DISTINCT (컬럼명)
이렇게 사용을 했는데 알고보니 DISTINCT
는 함수가 아니라 옵션이였다.
그저 중복을 없앨 때 사용하는 명령어인줄말 알았던 DISTINCT
가 함수가 아니라 옵션 키워드였던 것이다.
SELECT 절과 집계함수에서의 DISTINCT
SELECT 절에서의 DISTINCT
SELECT 절에 기본옵션은 ALL이라 컬럼들을 셀렉할때 모두 가져오는 것이고 옵션으로 DISTINCT
을 주면 SELECT
절에 오는 컬럼들 중에서 고유한 값들만 출력하는 것이다.
Example
SELECT DISTINCT prudct_id, order_id
FROM product
product_id
,order_id
를 셀렉트한 집합에서 유니크한 (product_id
,order_id
) 의 집합들의 값들만 출력
집계함수 에서의 DISTINCT
집계함수 안에서의 DISTINCT
는 SELECT 절과 반대로 먼저 해당 컬럼 중에 중복되지 않은 컬럼을 가져와 집계함수 처리한다.
Example
SELECT COUNT(DISTINCT prudct_id)
FROM product
UNION 절에서의 DISTINCT
UINION 절은 형식이 같은 두개의 테이블을 합칠 때 사용한 집합연산자인데, SELECT 절에서의 기본옵션이 ALL인 것과는 반대로 UNION 절에서의 기본옵션은 DISTINCT 이다.
예를 들어
SELECT product_id, product_name
FROM s_product
UINON
SELECT product_id, product_name
FROM r_product
이면 중복되지 않게 두개의 테이블을 합쳐 출력하는데 DISTINCT
가 기본옵션으로 되어있는 것이고
SELECT product_id, product_name
FROM s_product
UINON ALL
SELECT product_id, product_name
FROM r_product
위의 UNINON 집합연산자에 ALL 옵션을 주면 두개의 테이블을 중복테이블을 거르지 않고 모두 합쳐 출력하는 결과를 보여준다.
Author And Source
이 문제에 관하여(DB(MySQL) - DISTINCT), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kdh92417/DBMySQL-DISTINCT저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)