inblog logo
|
stupefyee
    SQL문제풀기

    [SQL 문제 풀이] 오랜 기간 보호한 동물(1)

    프로그래머스 (59044)
    Stupefyee's avatar
    Stupefyee
    Mar 04, 2025
    [SQL 문제 풀이] 오랜 기간 보호한 동물(1)
    Contents
    내가 작성한 쿼리
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/59044
    notion image
    notion image

    내가 작성한 쿼리

    Oracle

    SELECT * FROM( SELECT AI.NAME, AI.DATETIME FROM ANIMAL_INS AI -- 동물 보호소에 들어온 동물 정보가 담긴 테이블 LEFT OUTER JOIN ANIMAL_OUTS AO -- 보호소에서 나간 동물 정보가 담긴 테이블 ON AI.ANIMAL_ID = AO.ANIMAL_ID -- ANIMAL_ID를 기준으로 두 테이블 조인 WHERE AO.ANIMAL_ID IS NULL -- 보호소에 들어왔으나 나간 기록이 없는 동물만 선택 (입양되지 않은 동물) ORDER BY AI.DATETIME -- 보호소에 들어온 날짜 오름차순 정렬 (가장 오래된 동물부터) ) WHERE ROWNUM <= 3 -- 상위 3개의 결과만 선택 ;
    • 서브 쿼리를 사용하지 않고 ROWNUM <= 3을 통해 결과를 자르면 정렬 되기전의 결과 3개를 잘라서 정렬함

    MySQL

    SELECT AI.NAME, AI.DATETIME FROM ANIMAL_INS AI LEFT OUTER JOIN ANIMAL_OUTS AO ON AI.ANIMAL_ID = AO.ANIMAL_ID WHERE AO.ANIMAL_ID IS NULL ORDER BY AI.DATETIME -- 상위 3개의 결과 선택 LIMIT 3 ;
    • 위 N개 결과를 가져오는 함수 LIMIT가 정렬 이후에 실행되기 때문에 서브쿼리 필요 X

    차이점

    • 상위 N개 결과를 가져오는 방식, 순서의 차이
      • Oracle
        • ROWNUM <= N 을 사용하여 가져옴
        • WHERE절에서 사용됨 → 정렬보다 먼저 실행됨 → 서브쿼리 활용
      • MySQL
        • LIMIT N 을 사용하여 가져옴
        • 정렬 이후에 실행됨
     
    Share article
    Contents
    내가 작성한 쿼리

    stupefyee

    RSS·Powered by Inblog