programmers.co.kr/learn/courses/30/lessons/59042
코딩테스트 연습 - 없어진 기록 찾기
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디
programmers.co.kr
OUTER JOIN을 사용해보는 문제였습니다.
OUTER JOIN에는 두 가지가 있습니다. LEFT OUTER JOIN과 RIGHT OUTER JOIN입니다.
LEFT OUTER JOIN
JOIN문 좌측에서 SELECT한 테이블의 모든 데이터를 조회한 후 우측에서 고른 테이블과 ON절 다음의 조건에 해당하는 모든 행을 가져옵니다. 만약 좌측 테이블의 데이터와 우측 테이블의 데이터가 짝지어지지 않는다면 해당 열의 행 값은 NULL로 표시되게 됩니다.
다음과 같은 방식으로 사용합니다.
SELECT 검색할 컬럼
FROM 테이블명 LEFT OUTER JOIN 테이블명2
ON 테이블.컬럼명 = 테이블2.컬럼명;
RIGHT OUTER JOIN
JOIN문 좌측에서 SELECT한 테이블의 모든 데이터를 조회한 후 우측에서 고른 테이블과 ON절 다음의 조건에 해당하는 모든 행을 가져옵니다. 만약 좌측 테이블의 데이터와 우측 테이블의 데이터가 짝지어지지 않는다면 해당 열의 행 값은 NULL로 표시되게 됩니다.
다음과 같은 방식으로 사용합니다.
SELECT 검색할 컬럼
FROM 테이블명 RIGHT OUTER JOIN 테이블명2
ON 테이블명 = 테이블명2;
풀이방법
1. 열 선택 : ANIMAL_OUTS 테이블을 B로 정의하고 B테이블의 ANIMAL_ID, NAME열을 선택합니다.
2. LEFT OUTER JOIN 사용 : ANIMAL_INS 테이블을 A로 정의해 B테이블로 LEFT OUTER JOIN을 합니다. 그리고 ON 절로 A,B테이블의 ANIMAL_ID를 매칭시킵니다.
3. 조건 세우기 : 매칭된 데이터 중 A테이블의 ANIMAL_ID의 값이 NULL인 것들만 추출합니다.
4. 정렬 : B테이블의 ANIMAL_ID를 오름차순으로 정렬합니다.
Code
SELECT B.ANIMAL_ID, B.NAME
FROM ANIMAL_OUTS B
LEFT OUTER JOIN ANIMAL_INS A ON B.ANIMAL_ID = A.ANIMAL_ID
WHERE A.ANIMAL_ID IS NULL
ORDER BY B.ANIMAL_ID
'Algorithm > SQL' 카테고리의 다른 글
(MYSQL) - 프로그래머스 (SQL 고득점 kit - JOIN) : 오랜 기간 보호한 동물(1) (0) | 2021.03.12 |
---|---|
(MYSQL) - 프로그래머스 (SQL 고득점 kit - JOIN) : 있었는데요 없었습니다 (0) | 2021.03.12 |
(MYSQL) - 프로그래머스 (SQL 고득점 kit - GROUP BY) : 오랜 기간 보호한 동물(2) (0) | 2021.03.08 |
(MYSQL) - 프로그래머스 (SQL 고득점 kit - GROUP BY) : 입양 시각 구하기(1) (0) | 2021.03.08 |
(MYSQL) - 프로그래머스 (SQL 고득점 kit - GROUP BY) : 동명 동물 수 찾기 (0) | 2021.03.08 |