ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [프로그래머스 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개인 것이 된다.

     

     

     

     

    댓글

Designed by Tistory.