반응형
문제
ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다.
동물 보호소에 가장 먼저 들어온 동물의 이름을 조회하는 SQL 문을 작성해주세요.
SQL(MySQL)
SELECT NAME FROM ANIMAL_INS
ORDER BY DATETIME ASC
LIMIT 1;
반응형
SQL(Oracle)
SELECT NAME FROM
(SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME)
WHERE ROWNUM <= 1
와 오라클로 할 때 내 기억으로는 'TOP'을 사용했던 거 같아 TOP을 사용하니 계속해서 에러가 발생했다. 눈물을 머금고 구글에 검색해보니 ROWNUM을 사용해서 상위 몇개를 추출하는 방식을 찾을 수 있었다.
ROWNUM은 ORACLE 내부에서 눈에 보이지 않는 가상 컬럼인데, 테이블을 조회한 결과를 가져올 때 컬럼에 순번을 붙인다. ROWNUM을 이용해 동물을 찾으려면 서브쿼리를 어쩔 수 없이 이용해야 한다. 여기에서 사용한 서브쿼리는 '인라인뷰' 서브쿼리이며, 인라인뷰 서브쿼리는 위의 코드와 같이 FROM 절에서 서브쿼리를 지칭한다.
반응형
반응형
실행 결과
반응형