このサイトのいくつかの投稿からこのmysqlselectを取得し、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
答えはこの配列でした:Array([0] => After Sex、[1] => New Moon)4つであるはずの2つの要素だけ。
私はこれを私の映画サイト(http://www.crosstastemovies.com)のクイズセクションで使用しています。データベーステーブルには約1823本の映画があります。誰かがこれに光を当ててくれませんか?
ありがとう