[Oracle] 데이터 무작위 정렬하기
오늘은 업무를 진행 하다가 경험한 내용를 하나 공유 하려고 한다.
과일 테이블
과일이름 | 순번 |
---|---|
사과 | 1 |
바나나 | 2 |
복숭아 | 3 |
수박 | 3 |
딸기 | 3 |
위와 같은 데이터가 있다고 생각해보자. 우리가 하고 싶었던 것은 순번이 같은 데이터는 랜덤으로 정렬을 하여
사용자가 데이터를 조회할 때마다 순번이 같은 데이터는 무작위로 보이는 걸 구현하고 싶었다.
처음에 생각했던 방법은 데이터를 정상적으로 불러와 Java 단에서 순번이 같은 데이터를 랜덤으로 섞어
다시 리스트에 넣는 방식으로 하려고 했지만 생각보다 코드가 지져분해지는 거 같아 다른 방법을 생각하다가
Oracle에서 쿼리로 해결하는 방법을 알아냈다.
SELECT 과일이름
순번 || ROW_NUMBER() OVER (PARTITION 순번 ORDER BY DBMS_RANDOM.RANDOM) AS 순번디테일
FROM 과일
ORDER BY 순번 디테일
결과
과일이름 | 순번디테일 |
---|---|
사과 | 11 |
바나나 | 21 |
복숭아 | 31 |
수박 | 32 |
딸기 | 33 |
이와 같이 결과가 나오게 되며 복숭아,수박,딸기의 순서는 매 조회시마다 랜덤으로 바뀌게 된다.
다른 글 읽어보기 ⬇️
ShortCutKey