我有一段代码,从MySQL表中选择一个随机ID并显示结果(文本):
$text_result = mysql_query("SELECT text FROM `text` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `text` ) ORDER BY id LIMIT 1;");
$text = mysql_fetch_array($text_result);
echo "<div class='text'>" . $text{text} . "</div>";
我注意到当我第一次添加列时,返回的结果似乎倾向于较低的id,但现在我添加了更多(大约50),似乎只有前25%的id的结果才能显示
有谁知道是什么原因引起的吗?我迷路了
如果我错过了一些明显的东西,非常感谢和道歉
试试这个查询:
SELECT text
FROM `text`
ORDER BY RAND()
LIMIT 1
例子: http://sqlfiddle.com/!2/aee9d0/1
最终使用了这个,在这里找到:
SELECT
*
FROM
tablename AS t1
INNER JOIN
(
SELECT
ROUND(RAND() * (SELECT MAX(id) FROM tablename)) AS id
) AS t2
ON
t1.id >= t2.id
ORDER BY
t1.id ASC
LIMIT 1;
似乎运行良好。
order by rand() limit 1
也可以,但加载时间较慢
谢谢所有。我很好奇是什么导致了这个问题,如果有人知道的话。