SQL 쿼리로 확인
SELECT * FROM v$version;
- 이 쿼리를 실행하면 오라클의 버전, 운영체제 버전 등 다양한 정보가 출력되며, 가장 처음에 Database 버전이 표시됩니다
racle의 ROWNUM은 정렬 전에 필터링되므로, 단순히 조건 없이 ROWNUM = 1만 쓰면 "최근" 데이터가 아닌, 불특정한 한 줄이 먼저 뽑힐 수 있습니다.
예:
SELECT *
FROM YOUR_TABLE
WHERE ROWNUM = 1
ORDER BY CREATED_DATE DESC; -- 이 정렬은 먼저 필터 된 1건에만 적용됨
따라서 위 쿼리는 제대로 동작하지 않고, 최근 날짜가 아닌 데이터가 나올 수 있습니다.
✅ FETCH FIRST 1 ROWS ONLY는 ORDER BY 이후 적용됨
예:
SELECT *
FROM YOUR_TABLE
ORDER BY CREATED_DATE DESC
FETCH FIRST 1 ROWS ONLY;
- 이 방식은 먼저 전체 데이터를 날짜 기준으로 정렬하고,
- 정렬된 결과에서 상위 1개만 가져옵니다.
→ 그래서 **정확히 '최근 1건'**을 가져옵니다.
🔁 또는, Oracle 11g 이하에서는 이렇게 써야...
Oracle 11g 이하에서는 FETCH FIRST 문법이 없기 때문에 다음과 같이 서브쿼리 + ROWNUM 방식으로 쓸 수 있습니다:
SELECT *
FROM (
SELECT *
FROM YOUR_TABLE
ORDER BY CREATED_DATE DESC
)
WHERE ROWNUM = 1;
- 이 방식은 먼저 서브쿼리에서 정렬된 데이터 생성 후
- 그 결과에서 ROWNUM = 1을 적용
→ 의도대로 동작합니다.
📝 결론
조건추천 방식
| Oracle 12c 이상 | ORDER BY 날짜 DESC FETCH FIRST 1 ROWS ONLY; |
| Oracle 11g 이하 | SELECT * FROM (SELECT * ORDER BY 날짜 DESC) WHERE ROWNUM = 1; |
| 단순 테스트용 or 임의의 한 줄만 필요 | ROWNUM = 1 가능 (정확한 "최신"은 아님) |
'Sql' 카테고리의 다른 글
| 전체적인 시스템과 개발 생태계에 대한 이해 (3) | 2025.07.24 |
|---|---|
| SQL 프로그램없이 웹으로 실습하기 (1) | 2025.07.07 |
| 실무에서 SQL 쿼리를 초보자가 쉽게 이해하고 익히려면 (0) | 2025.07.07 |
| IN,BETWEEN,EXISTS (0) | 2025.07.07 |
| GROUP BY 와 HAVING (0) | 2025.07.07 |