😵 ~23.11.10/✨ Prj.BuildDiary

[DB] order by rand()

unikue 2023. 12. 10. 00:30

플젝할땐 내꺼하기 바빠서 다른사람 코드를 깊이 들여다보질 못했는데 (심지어 난 갖다쓸일도 없었음) 복기한다고 열어보다보니 흥미로운 부분들이 보인다. 

 

<select id="similarPersonalityFindAll" resultType="MissionView">
    select * from
    mission_view
    where
    end_date>=curdate()
    and personality_id = 1
    order by 
    rand() 
    limit 4
</select>

 

 

이 부분은 인덱스 화면에서 비회원을 대상으로 보여주기위해, 쿼리문을 세팅해둔 부분인데, 다른건 다 알겠지만 order by 구문이 이해가 안갔다.

 

limit 4라서 4개만 뽑겠다는건 알겠고, 자바의 랜덤함수처럼 rand()도 랜덤함수 같은데 order by rand() limit 4는 그럼 무작위로 정렬해서 4개만 뽑는다는건가..? 했더니 정답.

 

이렇게 조합해서 쓰는건가 했더니 무작위로 추출할때 'order by rand()' 가 하나의 구문으로 쓰인다고 한다.

실행할때마다 다른값을 반환하는것, 그리고 0~1사이 이기 때문에 SELECT FLOOR(RAND() * 100) + 1; 이런식으로 가공을 해주어야 1~100까지의 난수가 나온다는것도 자바의 랜덤객체 특성과 동일하다. 😁