选择随机,限制并不总是有效

时间:2013-02-11 14:37:18

标签: php mysql select random distinct

我从这个网站的一些帖子中选择了这个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部电影。 有人可以对此有所了解吗?

由于

1 个答案:

答案 0 :(得分:1)

由于没有足够的行,因此没有返回正确的数字。当rand()返回非常接近1的值时,id2的值非常接近最大值。没有足够的行满足where子句,因此返回所有可用的行。