Salangdung_i의 기록

SQL DISTINCT 응용 본문

BACKEND/SQL

SQL DISTINCT 응용

Salangdung_i 2020. 6. 28. 21:48
728x90

DB에서 데이터를 조회 할 때 중복을 제거하기 위해 DISTINCT를 많이 사용한다. 중복제거로 쓰이는 DISTINCT는 이미 많이들 알고 있으니, 다른방법으로 DISTINCT 를 사용해보도록 하자. 

업무를 하다, 각기 다른 SQL문을 리스트형태로 붙여서 가져와야 했던 적이있었다. 

그때 사용했던 방법이다. 

 


DISTINCT 구문 

SELECT DISTINCT column1, column2, ...
FROM table_name;

 

SQL SELECT DISTINCT 문

SELECT DISTINCT 문은 구별되는 (다른) 값만 리턴하는 데 사용됩니다.

테이블 내에서 열에는 종종 많은 중복 값이 ​​포함됩니다. 때로는 다른 (고유 한) 값만 나열하려고합니다.

 


먼저 salangdung.tistory.com/44 를 참고하여 TABLE생성,  DATA삽입을 진행하자.

 SELECT * FROM TB_MEMBER; 를 조회해서 아래와 같이 출력되면 다음을 진행하도록 하자. 

내가 출력하고싶은 값은 

컬럼 별칭을 DATA1, DATA2, DATA3 이며 USER_ID컬럼의 1번 부터 3번까지를 리스트 형태로 조회하고자 한다. 

먼저 조회 할 각각의 SQL을 만든다. 

SELECT USER_ID FROM TB_MEMBER WHERE USER_NAME = '사랑둥이';
SELECT USER_ID FROM TB_MEMBER WHERE USER_NAME '사용자1';
SELECT USER_ID FROM TB_MEMBER WHERE USER_NAME = '사용자2'    

 

자 이제 이 쿼리들을 어떻게 List 형태로 출력 할 수 있나 보자. 

 

SELECT DISTINCT 
(
    SELECT USER_ID FROM TB_MEMBER 
    WHERE USER_NAME = '사랑둥이'
AS DATA1, 
(
    SELECT USER_ID FROM TB_MEMBER
    WHERE USER_NAME = '사용자1'
AS DATA2,
(
    SELECT USER_ID FROM TB_MEMBER
    WHERE USER_NAME = '사용자2'
AS DATA3

FROM TB_MEMBER;

위의 SQL 을 실행하면, 

다음과 같은 결과를 도출 할 수 있다.

 

DISTINCT문 이외 UNION ALL으로도 리스트 형태로 값을 출력할수 있는 방법이 있는데,,, 그건 다음에 작성하도록 하겠습니다.  UNION ALL 로 LIST 형태 출력이 되지 않아서 DISTINCT문을 썼었는데 그 안됬던 상황이 기억나질않는다.... 

 

참고 : https://www.w3schools.com/sql/sql_distinct.asp

 

SQL SELECT DISTINCT Statement

W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.

www.w3schools.com

"Icon made by Pixel perfect from www.flaticon.com"

728x90

'BACKEND > SQL' 카테고리의 다른 글

SQL TABLE CREATE  (0) 2020.06.27