SELECT *
FROM employees
ORDER BY DBMS_RANDOM.value()
order by가 실수로 정렬이 안 될텐데, 이게왜 되는지 궁금합니다. 관련 링크도 첨부해주시면 감사하겠습니다.
by 창조의날개
[2015.08.04 14:02:17]
SELECT DBMS_RANDOM.value() FROM DUAL;
위 쿼리를 실행해 보시면 렌덤값을 출력합니다.
그러므로 ORDER BY를 무작위로 하기 위해서 쓴듯합니다.
by 마농
[2015.08.04 14:08:42]
ORDER BY 절에 올 수 있는 것은
1. 컬럼 이나 표현식(값, 계산식, 함수 등) 이 있고요.
- 해당 표현식의 값으로 정렬하라는 의미
2. 또한 조회 컬럼의 번호가 올 수도 있습니다.(예 : ORDER BY 1, 2)
- 해당 순번에 있는 컬럼의 값으로 정렬하라는 의미
질문을 하신 이유는... 2번과 1번을 혼동하신 듯 하네요.
by 오라클
[2015.08.04 15:19:23]
2번 형태를 의도하고 썼어요.
그런데 DBMS_RANDOM.value() 반환치가 0.324535 이런 실수치를 반환하는데
컬럼순서에 0.32번째는 없는데도 정렬이 된다는 게 이상합니다
by 마농
[2015.08.04 16:13:29]
바로 그거죠.
잘못 생각하신 것입니다.
2번처럼 쓰려면 숫자를 직접 쓰는거에요.
사용하신 방법은 1번 표현식을 쓴 방법이죠.
1번과 2번은 전혀 의미가 다릅니다.
by jkson
[2015.08.04 15:20:53]
SELECT DBMS_RANDOM.value() RVAL, A.*
FROM 테이블 A
ORDER BY RVAL
이것과 같은 의미라 생각하시면 됩니다.
by 오라클
[2015.08.04 17:55:19]
예 감사합니다. 제가 스스로 더 학습할게요
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.