2013-02-11 2 views
0

이 사이트에서이 게시물을 선택하면이 사이트에서 좋은 결과를 얻을 수 있으며 99 %는 효과적이지만 때로는 내가 요청한 임의의 요소 수를 반환하지 않습니다. 나는 이유를 모른다.무작위로 한도로 선택하십시오 항상 작동하지 않습니다

SELECT DISTINCT movie_title 
FROM movies AS r1 JOIN 
    (SELECT (RAND() * (SELECT MAX(movie_id) FROM movies)) AS id2 
    ) AS r2 
WHERE r1.movie_id >= r2.id2 AND movie_title != "New Moon" 
ORDER BY r1.movie_id ASC LIMIT 4 

대답이 배열 하였다 : 여기서 실패 최근의 예는 다음 어레이 ([0] => 섹스 후, [1] => 초승달)는 네 단 두 요소 했어야 때.

내 영화 사이트 (http://www.crosstastemovies.com)의 퀴즈 섹션에서 사용하고 있습니다. 데이터베이스 테이블에는 약 1823 개의 영화가 있습니다. 누군가가이 문제에 대해 밝힐 수 있습니까?

감사합니다.

답변

1

행이 충분하지 않아 올바른 번호를 반환하지 않습니다. rand()이 1에 매우 가까운 값을 반환하면 id2의 값이 최대 값에 매우 가깝습니다. where 절을 만족하는 행이 충분하지 않으므로 사용 가능한 모든 행이 반환됩니다.

+0

답장을 보내 주셔서 감사합니다. 원하는 행 수를 반환하는 다른 방법이 있습니까? RAND가 반환 한 값이 1에 가까울 경우 RAND() 또는 id2를 변경했을 가능성이 있습니까? ... –

+0

생성 된 배열이 확인되었습니다. 값의 수가 제한보다 작 으면 다시 호출합니다. 이상적이 아니라 작동합니다. –

관련 문제