-
[프로그래머스 MySQL,Oracle] - 오랜 기간 보호한 동물Data Engineering/MySQL & Oracle 2021. 6. 27. 01:20
맨 위에서부터 n개를 추출할 때 사용하는
LIMIT, ROWNUM를 구분할 수 있어야 한다.
[ 프로그래머스 - 오랜 기간 보호한 동물(1) ]
(마지막 문장) ANIMAL_ID는 ANIMAL_INS의 ANIMAL_ID의 외래 키 입니다.
➔ ANIMAL_ID가 기본키이면서 외래키라는 의미이다.
➔ WHERE 조건문에서 ANIMAL_ID를 사용해야 한다.
MySQL (LIMIT 사용)
SELECT A.NAME, A.DATETIME FROM ANIMAL_INS A LEFT JOIN ANIMAL_OUTS B ON A.ANIMAL_ID=B.ANIMAL_ID WHERE B.ANIMAL_ID IS NULL ORDER BY A.DATETIME LIMIT 3
LEFT OUTER JOIN = LEFT JOIN (아무거나 사용해도 된다)
*LIMIT N : 맨 위에서부터 N번째까지 조회한다.
*LIMIT N,M: (맨 위에서부터) N번째부터 M번째까지 조회한다.
ORACLE (ROWNUM 사용)
(틀린문법)
SELECT A.NAME, A.DATETIME FROM ANIMAL_INS A, ANIMAL_OUTS B WHERE A.ANIMAL_ID=B.ANIMAL_ID(+) AND B.ANIMAL_ID IS NULL AND ROWNUM<=3 ORDER BY A.DATETIME
(정답)
SELECT * FROM (SELECT A.NAME, A.DATETIME FROM ANIMAL_INS A, ANIMAL_OUTS B WHERE A.ANIMAL_ID=B.ANIMAL_ID(+) AND B.ANIMAL_ID IS NULL ORDER BY A.DATETIME) WHERE ROWNUM <= 3
틀린 이유: JOIN을 완성한 결과에서 위에서부터 3개의 행을 추출해야 한다.
(틀린문법)처럼 하면 JOIN 조건이 2개인 것이 된다.