- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 트러블슈팅
- 오블완
- 오라클
- wordpress
- iframe
- Oracle
- 티스토리챌린지
- function
- Hostinger
- 자바스크립트
- 환경세팅
- 배열
- PROCEDURE
- dbeaver
- PLSQL
- 워드프레스
- 함수
- 오류해결
- javascript
- 문제해결
- JSP
- pl/sql
- 엘리멘터
- 클론코딩
- 이클립스
- spring boot
- 프로시저
- sql
- 워스프레스
개발 공부중
[ORACLE] ROWNUM = 1 사용해서 중복데이터 오류 해결하고 하나의 로우만 가져오기 본문
오라클 데이터베이스에서 ROWNUM은 데이터 조회와 필터링에서 유용하게 사용되는 기능이다.
ROWNUM = 1 은 주로 데이터 중복을 방지하거나 특정 조건을 만족하는 첫 번째 로우를 조회할 때 사용된다.
서브쿼리(where) 인라인뷰(from)에서 반환되는 각 행에서 1부터 시작하는 순번을 할당한다.
ROWNUM이란?
ROWNUM은 오라클 데이터베이스에서 각 로우(행)에 부여되는 가상의 번호다. 이 번호는 로우를 고유하게 식별하기 위해 사용된다. 여기서 알아야할 점은 ROWNUM은 데이터베이스 테이블의 실제 컬럼이 아니라 가상의 컬럼이라는 점이다. 그래서 데이터베이스에 저장되지 않으며, 쿼리 실행 결과의 순서에 따라 매겨진다.
ROWNUM 사용법
ROWNUM은 주로 처음 몇 개의 로우를 조회하거나 특정 조건에 해당하는 로우 중 첫 번째 로우를 가져올 때 사용된다.
아래는 ROWNUM을 사용하는 기본적인 쿼리 두 개
- 첫 번째 로우 조회
SELECT *
FROM my_table
WHERE ROWNUM = 1;
my_table 테이블에서 ROWNUM이 1인 첫 번째 로우를 선택한다. 즉, 가장 처음에 나타나는 로우를 가져옵니다.
- 중복 데이터 오류 방지
ROWNUM = 1은 중복 데이터가 있을 때 오류를 방지하면서 하나의 로우만을 가져온다.
예를 들어, 아래는 orders 테이블에서 가장 최근의 주문을 가져오는 쿼리다.
예시1번,
SELECT *
FROM orders
WHERE order_date = (SELECT MAX(order_date) FROM orders)
AND ROWNUM = 1;
주문 테이블에서 가장 최근 주문의 order_date와 동일한 order_date를 가지는 로우 중에서 ROWNUM이 1인 로우를 선택한다. 이렇게 하면 최신 주문을 가져오면서 중복 데이터로가 아닌 하나의 데이터로 가져온다.
예시2번,
SELECT FIRST_NAME,
LAST_NAME,
SALARY,
(SELECT B.DEPARTMENT_NAME
FROM DEPARTMENTS B
WHERE D.DEPARTMENT_ID = A.DEPARTMENT_ID
AND ROWNUM = 1) AS DEPT_NM
FROM EMPLOYEES A
WHERE SALARY > 5000;
예시2번 결과화면,
주의사항
중요한 점은 ROWNUM을 사용할 때 조건을 WHERE 절에서 먼저 걸어야 한다는 것이다.
조건을 먼저 걸지 않으면 원하지 않는 결과가 나올 수 있다.
'ORACLE' 카테고리의 다른 글
[ORACLE] UNION 과 UNION ALL 사용예시와 오류 해결 방법 (0) | 2023.12.11 |
---|---|
[ORACLE] FUNCTION/PROCEDURE 차이점과 사용방법 (0) | 2023.11.30 |
[ORACLE] 그룹함수 CUBE와 ROLLUP 사용예시와 차이점 (0) | 2023.11.29 |
ORA-01045 / ORA-01950 - 사용자 권한부여 / 할당량부여 (0) | 2023.01.04 |
DBeaver(디비버)에서 오라클(Oracle) 연결하기 (0) | 2023.01.01 |