[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

이와 같이 결과가 나오게 되며 복숭아,수박,딸기의 순서는 매 조회시마다 랜덤으로 바뀌게 된다.

다른 글 읽어보기 ⬇️