코딩테스트/SQL
프로그래머스_없어진 기록 찾기
zyin
2021. 1. 22. 09:22
문제
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
풀이
SQL문을 중첩해서 사용하는 것을 서브쿼리라고 하며, 서브쿼리를 괄호로 묶어서 사용해야 하며 서브쿼리 안에서 Order By절은 사용할 수 없다.
SELECT절에서의 서브쿼리/ 스칼라 서브 쿼리
SELECT 컬럼1, 컬럼2,
AVG(SELECT 컬럼1 FROM 테이블명2 WHERE 조건문)
FROM 테이블명1
WHERE 조건문;
FROM절에서의 서브쿼리/ 인라인 뷰
SELECT 컬럼1, 컬럼2
FROM (SELECT 컬럼1, 컬럼2, 컬럼3 FROM 테이블명 WHERE 조건문)
WHERE 조건문;
WHERE절에서의 서브쿼리/ 중첩 서브 쿼리
SELECT 컬럼1, 컬럼2
FROM 테이블명1
WHERE 컬럼3 IN (SELECT 컬럼1, 컬럼2, 컬럼3 FROM 테이블명2 WHERE 조건문);
코드
-- 서브 쿼리 사용
SELECT ANIMAL_ID, NAME
FROM ANIMAL_OUTS
WHERE ANIMAL_ID NOT IN (
SELECT ANIMAL_ID FROM ANIMAL_INS
)
ORDER BY ANIMAL_ID;
-- JOIN 사용
SELECT ANIMAL_OUTS.ANIMAL_ID, ANIMAL_OUTS.NAME
FROM ANIMAL_INS RIGHT JOIN ANIMAL_OUTS
ON ANIMAL_INS.ANIMAL_ID = ANIMAL_OUTS.ANIMAL_ID
WHERE ANIMAL_INS.ANIMAL_ID IS NULL;