-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) と、ID の最初の 25% からの結果のみが表示されるようです。

何がこれを引き起こしているのか、誰にも考えがありますか? 私はかなり迷っています

明らかな何かを見逃した場合は、多くの感謝と謝罪

4

2 に答える 2

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 に答える