Contents
내가 작성한 쿼리

내가 작성한 쿼리
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