SQL
ORACLE DBMS_RANDOM + ROWNUM [LIMIT]
sooyeoon
2023. 4. 26. 16:19
쿼리를 조회할 때마다 랜덤으로 데이터의 순서가 변경되게 하려면 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;