Database/SQL

MYSQL - UNION / UNION ALL / IN / NOT IN 정리

JaeHoney 2020. 11. 25. 23:44

UNION / UNION ALL

UNION은 두 쿼리의 결과를 합치는 것을 말합니다. 이는 열의 개수가 일치하고 각 쌍의 데이터 타입들이 호환되는 두 쿼리에서만 작동합니다. 다음은 예시입니다.

SELECT stdName, addr FROM mathClassTBL
    UNION ALL
SELECT stdName, addr FROM engClassTBL;

두 쿼리는 열의 개수가 같아야 하고, 데이터 형식도 각 쌍이 같거나 호환되어야 합니다. 열 이름은 첫 번째 쿼리를 따릅니다.  ALL을 붙히면 중복된 열까지 모두 출력되고, ALL을 제거하고 UNION만 사용하면 중복된 열은 제거됩니다.

 

 

IN / NOT IN

IN은 첫 번째 쿼리의 내용 중 두 번째 쿼리에 해당되는 것만 조회하는 구문입니다.

SELECT * FROM userTBL
    WHERE userID IN (SELECT userID FROM userTBL WHERE Recommender IS NULL); 

추천인이 없는 유저들만 조회하는 예시입니다. 결과는 Recommender열이 NULL값인 행만 조회될 것입니다.

 

SELECT * FROM userTBL
    WHERE userID NOT IN (SELECT userID FROM userTBL WHERE Recommender IS NULL); 

추천인이 있는 유저들(추천인이 없는 유저들을 제외한 유저들)을 조회하는 예시입니다. NOT IN은 첫 번째 쿼리의 내용 중 두 번째 쿼리의 내용에 해당된다면 해당 행을 제외하는 구문입니다. 결과는 Recommender열이 NULL이 아니고 어떤 값이든 가지는 행만 조회될 것입니다.