/*
php 와 mysql 에서 사용하였지만 다른 웹개발언어에도 사용하셔도 무관합니다.
DB에서 다양한 것을 추출하고 싶을 때 사용하세요.
다만, 전체를 뽑아오는 것에 대한 과부하가 걱정이 되네요.
*/
SELECT * FROM table_name ORDER BY rand() LIMIT 0,1;
지식인 다 뒤져보니까.. 답변중에
======================================================
MySQL Query 에서 ORDER BY RAND() 는
완벽한 랜덤을 구현하지 못하는 경우가 종종 있습니다.
몇 개의 row 를 뽑아낸 후, 배열에 넣어 array_suffle() 함수
등을 이용하시면 보다 좋은 결과를 만들어내실 수 있을 것입니다.
======================================================
re: DB내용을 랜덤으로 뽑아내고 싶은데요(내공100)
harangida (2005-06-23 09:51 작성, 2005-06-23 09:53 수정)
질문자 평
감사합니다 ^-^ 이제야 해결했네요.. 몇일을 끙끙거렸는데 하하;;
------------------------------------------------------------------------------------
해당 게시판의 인덱스 필드가 num 이라고 가정합니다.
만약 다른 필드명일 경우 아래 num 을 해당 필드명에 맞게 변경하세요.
------------------------------------------------------------------------------------
$query_focus = "SELECT num FROM focus_board ORDER BY num DESC";
$rs=mysql_query($query_focus,$connect);
//배열생성 하고 배열에 값을 넣습니다.
$arr = array();
while($list=mysql_fetch_object($rs)) {
array_push($arr,$list->num);
}
// 배열을 섞습니다.(여러번 섞어도 무방합니다.)
shuffle($arr);
// 배열에서 첫번째 값을 뽑아옵니다. (편의상 첫번째 지만 알아서 하셔도 되요)
$val=array_slice ($arr, 0, 1);
// 해당 값을 쿼리하여 불러옵니다.
$query_focus = "SELECT * FROM focus_board WHERE num = $val[0]";
$result_focus= mysql_query($query_focus,$connect);
$data_focus= mysql_fetch_array($result_focus);
// 이후 나머진 소스는 동일합니다.
if($data_focus[use_html] == "yes"){
$content = explode("
",$data_focus[content]);
$content = $content[0]."
".$content[1]."
".$content[2]."
".$content[3]."
".$content[4]."
".".........";
}else{
$content = explode("n",$data_focus[content]);
$content = $content[0].$content[1].$content[2].$content[3].$content[4].".........";
}
/*
그냥 rand() 를 사용하는 것이 아닌 다른 방법이 있긴 하네요.
50 ~ 60 의 숫자를 구하고 싶을 때 rand()함수는 0에서 1보다 작은 실수를 생성시킵니다.
따라서 11을 곱한후 소수점 이하를 없애면 0부터 10까지 숫자가 생성됩니다.
여기에 50을 더하면 되겠죠?
FLOOR(RAND() * 11) + 50
*/
[출처] 웹디황용
"쇼핑몰·홈페이지·오픈마켓
블로그·페이스북·이메일 등의 각종 마케팅 글쓰기, 각종 광고, 영업, 판매, 제안서, 전단지 반응율 3배×10배 이상 높이는 마법의 8단계 공식" |
☞자세히보기 |
|
|