Programmers/SQL
[mysql/oracle] 오랜 기간 보호한 동물(1)
Anoi
2023. 7. 5. 23:51
문제 설명
문제
결과
mysql - 처음 코드
1
2
3
4
5
|
SELECT NAME, DATETIME
FROM ANIMAL_INS
WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_OUTS)
ORDER BY DATETIME
LIMIT 3
|
cs |
ANIMAL_OUTS에 없는 동물을 뽑기 위해 서브쿼리를 사용했는데
사실 join이라는 카테고리에는 적합하지 않다
ANIMAL_INS에 있는 동물 중 ANIMAL_OUTS에는 없는 동물을 뽑으면 되므로
LEFT JOIN을 걸고 OUTS 테이블쪽 데이터를 null 처리하면 된다,
정답코드
1
2
3
4
5
6
|
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
|
cs |
oracle
1
2
3
4
5
6
7
8
9
|
SELECT A.NAME, A.DATETIME
FROM(
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
) A
WHERE ROWNUM <= 3
|
cs |