본문 바로가기
SQL

ORACLE DBMS_RANDOM + ROWNUM [LIMIT]

by sooyeoon 2023. 4. 26.

쿼리를 조회할 때마다 랜덤으로 데이터의 순서가 변경되게 하려면 ORDER BY 절에서 DBMS_RANDOM.RANDOM()

함수를 사용하면 된다. 

SELECT A.EMPNO, A.EMPNM, B.DEPTNM
FROM A, B, C, D
WHERE A.EMPNO = C.EMPNO
AND B.DEPT_CODE = D.DEPT_CODE
ORDER BY DBMS_RANDOM.RANDOM()

이때 랜덤으로 조회된 함수를 다시 임의적으로 정해진 수만큼 추출하기 위해서는 WHERE 절의 ROWNUM 으로 LIMIT를 설정할 수 있다. 

 

RANDOM으로 추출하는 쿼리를 하나로 묶어 서브쿼리로 이용하여 WHERE절을 새롭게 정의할 수 있다.

SELECT EMPNO, EMPNM, DEPTNM 
FROM
(SELECT A.EMPNO, A.EMPNM, B.DEPTNM 
FROM A, B, C, D
WHERE A.EMPNO = C.EMPNO
AND B.DEPT_CODE = D.DEPT_CODE
ORDER BY DBMS_RANDOM.RANDOM()
) 
WHERE ROWNUM<=10;