我从这个网站的一些帖子中选择了这个mysql,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部电影。 有人可以对此有所了解吗?
由于
答案 0 :(得分:1)
由于没有足够的行,因此没有返回正确的数字。当rand()
返回非常接近1的值时,id2
的值非常接近最大值。没有足够的行满足where
子句,因此返回所有可用的行。