[MySQL]DB에서 데이터를 임의로 가져올때...

회사에서 퀴즈 게임을 만드는데 데이터를 임의 순서로 지정된 갯 수만큼 읽어 와야 하는 과제가 주어졌다.
이전엔 이런저런 꼼수를 생각했을텐데, 간단히 쿼리문에서 해결이 되는 것을 최근에 알았다.
역시나 머리나쁜 자신을 탓하며 기록해둔다.

MySQL : RAND() 함수를 사용.
 ex) SELECT id, question FROM questions ORDER BY RAND() LIMIT 10;

덤으로 다른 DBMS의 쿼리문도 참고로 찾아 봤다.

MS SQLServer : NEWID() 함수를 사용.
 ex) SELECT TOP 10 id, question FROM questions ORDER BY NEWID();

PostgreSQL : RANDOM() 함수를 사용. 함수명이 약간 다를뿐 MySQL과 같다.
 ex) SELECT id, question FROM questions ORDER BY RANDOM() LIMIT 10;

Oracle : dbms_random.value 를 사용한다고 한다.
 ex) SELECT column FROM ( SELECT column FROM table ORDER BY dbms_random.value ) WHERE rownum = 1

------
물론 위의 쿼리문 이외에 다양한 방법이 존재할 것이다만, 간단히 함수를 사용하여 얻을 수 있다는 것에 만족한다.
구글에서 "SQL SELECT RANDOM"으로 검색하면 좀 더 다양한 결과를 얻을 수 있을 것이다.




by 연서아빠 | 2009/05/07 13:50 | DB | 트랙백 | 핑백(1) | 덧글(2)

트랙백 주소 : http://neojjang.egloos.com/tb/1902978
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Linked at IT 프로를 향한 조건? : .. at 2009/07/01 00:43

... DB에서 rand를 사용하여 순서를 섞는 것에 대해서 전에 얘기 했었다. →[MySQL]DB에서 데이터를 임의로 가져올때... 이번엔 PHP 스크립트에서 임의의 데이터를 뽑기 위해 사용할 수 있는 함수를 소개 한다.보통 당첨자를 선정하기위해 많이 사 ... more

Commented by 산사랑 at 2009/05/07 16:40
저는 Ramdom 보다는 페이지 단위로 가져오는 방법에 더 관심이 많습니다.

예를 들면, 한페이지당 20개씩 표시할 때 3번째 페이지에 표시할 데이터를 DBMS에서 가져오는 방법.
Commented by 연서아빠 at 2009/05/08 11:00
ㅎㅎ
게시판등에서 많이 사용되는 쿼리군요.
사용하는 DBMS에 따라 쿼리가 조금씩(?) 다르기 때문에 ^.^;

보통은 일관된 데이터에 대해서 시작위치는 (페이지번호-1)*(페이지당 갯수) 식을 통해서 구할 수 있을 겁니다. ^.^

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶