가끔 가다 여러 개의 레코드 중에서 임의의 하나를 뽑아내야 하는 경우가 있습니다.
간단하게는 일단 레코드를 뽑아서 PHP 등등에서 랜덤으로 index를 결정해서 할 수가 있고, 복잡하게는(대상 레코드가 많으면) 미리 뽑아서 별도 파일이나 테이블에 저장한 후에 뽑는 방법도 있겠지요.
대상 레코드의 갯수가 많지 않은 경우에는 간단하게 SQL 에서 처리하는 방법이 있습니다 :
SELECT * FROM Member WHERE m_kind = 1 ORDER BY RAND() LIMIT 1;
주의할 점은, 절대 scalable 하지 않다는 것.. temporary table을 생성하고 소트를 하기 때문에 레코드 갯수가 많은 때 사용하면 안되겠습니다. 하지만 몇 개만 뽑아서 할 경우에 간단히 사용하기에는 좋은 방법일 수 있습니다. ^^;;
'Dev > sql' 카테고리의 다른 글
[mysql] 현재로부터 6시간 이내의 record를 select 하기 (0) | 2015.03.19 |
---|---|
[MySQL] CURDATE(), CURRENT_DATE(), INTERVAL 을 이용해서 어제 날짜 가져오기 (0) | 2014.09.15 |
[sql] pagination, 페이지 나누기 (0) | 2014.02.25 |