-2

我有一段代码从 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 的结果

有人对可能导致这种情况的原因有任何想法吗?我很迷茫

非常感谢和道歉,如果我错过了一些明显的东西

4

2 回答 2

4

试试这个查询:

SELECT text 
FROM `text`
ORDER BY RAND()
LIMIT 1

示例: http ://sqlfiddle.com/#!2/aee9d0/1

于 2013-06-05T14:25:14.533 回答
0

最终使用了这个,在这里找到:

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

也可以,但是加载速度慢

谢谢大家。如果有人知道,仍然很好奇可能导致问题的原因。

于 2013-06-05T15:44:11.437 回答