블로그 이미지
Orangeline



Statistics Graph
Total574,577
Today90
Yesterday604

글 보관함



최근에 받은 트랙백




간혹 업무를 요청하시거나 개발할 경우 무작위로 추출해달라고 하는 요청을 가끔 받습니다. C로 개발하기에는 왠지 손이 많이 가기 때문에 간단한 쿼리를 이용하여 무작위로 원하는 건수만큼 추출하는 방법을 공유하고자 합니다.


무작위 추출방법


SELECT *
  FROM ABCDE
WHERE AAA = '1'  -- 조건1
    AND BBB = 'A'  -- 조건2
ORDER BY DBMS_RANDOM.VALUE -- 랜덤함수


무작위 추출방법은 ORDER BY 절에 위와 같이 랜덤함수를 넣어주면 됩니다. 쿼리 속도는 서버에 따라 다른데 랜덤함수를 사용할때는 속도가 좀 느린편입니다.






원하는 갯수만큼 추출하는 방법


오라클은 MySql과 틀리게 ROWNUM 을 사용하여 추출해야 해요

위에 쿼리와 같다고 가정할때 바깥에 FROM으로 묶어주시고 ROWNUM을 사용하면 되는거죠.


SELECT *

   FROM (

SELECT *
  FROM ABCDE
WHERE AAA = '1'  -- 조건1
    AND BBB = 'A'  -- 조건2
ORDER BY DBMS_RANDOM.VALUE


WHERE ROWNUM <= 100 (무작위 100개 추출 쿼리의 예)






혹시 MySql을 사용하는 유저는 오라클에 DBMS_RANDOM.VALUE 대신 RAND()을 사용하시고 ROWNUM 대신 LIMIT 100 이런식으로 바꿔 사용하시면 됩니다. 아래 오라클 예 처럼 FROM절 안에 묶을 필요없습니다. 이럴땐 오라클 보다 편하네요.

저작자 표시
신고
Posted by Orangeline

댓글을 달아 주세요

  1. 2015.04.02 16:40 신고 BlogIcon 박군..  댓글주소  수정/삭제  댓글쓰기

    향수 하나 사고 싶은데......추천 좀 부탁드려요! ㅎㅎㅎ

    • 2015.04.02 16:47 신고 BlogIcon Orangeline  댓글주소  수정/삭제

      전혀 전문가가 아니라 뜸금없는 질문에 좀 당황했습니다...
      하지만? 전에 아는 누님이 해준 말이 있는데요 겐죠 대나무 라는 향수가 있는데 냄새만 맡아도 만나보고싶은 욕구가 생긴다고 이야기해서 구입한 적이 있습니다.

  2. 2015.04.02 17:32 신고 BlogIcon 마니7373  댓글주소  수정/삭제  댓글쓰기

    저에겐 많이 어렵네요.ㅋㅋ
    그래서 공감만 누르고 갑니다^^

티스토리 툴바