order by rand(); 라는 구문은 mysql 에서 해당 테이블에서 랜덤한 순서대로 정보를 나열해서 가져 오는 것입니다. 어느 특정 row 를 random 하게 추출하고자 할때 유용하게 사용될 수 있지요.
동관님의 질문을 받고 한번 고민을 해 봤습니다.
지금까지의 결론은 있을 것은 같은데 그렇게 쉽지는 않다는 것입니다.
다음과 같은 가정이 성립한다고 생각하고, 한가지 해법을 제시해 보겠습니다.
1. _rowid 라는 특정한 필드가 있으며 이것은 1 부터 시작해서 계속 serial 로 증가하는 타입이다. (serial 이라는 자료형으로 선언되어 있다면 편리하겠지요)
2. _rowid 값은 serial 임을 보장하며, 중간에 빠지는 값이 없다.
3. 이 경우 특정 _rowid 값을 가지는 row 를 임의로 추출하고자 한다.
select * from table_name where
(_rowid=ceil(random()*(select max(_rowid) from table_name)));
>>김동관 님께서 쓰시길<<
:: 안녕하세요?
::
:: mysql을 사용할때 임의의 데이타를 랜덤하게 불러 읽어들이기 위해서 select문에 order by rand()를
:: 사용했었는데 아주 유용하더군요.
::
:: 그런데 postgresql에서도 임의의 row를 랜덤 추출하기 위해서 이것과 같은 효과를 얻는 쿼리방법을 알
:: 고 싶습니다.
::
:: 미리 답변에 감사드리겠습니다.
::
:: 좋은 하루 되세요.
::
:: ^^
|