1

データベースに名前があり、コンテストの名前を描きたいと思っています。

誰にもそのアイデアがありますか?

ありがとう !!

4

2 に答える 2

2

このようなクエリが機能する可能性があります

SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;
于 2012-05-07T08:58:37.337 に答える
2
SELECT * FROM table WHERE num_value >= RAND() * (SELECT MAX(num_value) FROM table) LIMIT 1

num_value にインデックスが付けられている場合、テーブルのサイズに関係なく、これは一定の時間で機能します。1 つの注意点: これは、num_value が 0..MAX(num_value) の範囲で均等に分散されていることを前提としています。データセットがこの仮定から大きく外れている場合、歪んだ結果が得られます (一部の行が他の行よりも頻繁に表示されます)。

于 2012-05-07T08:59:48.867 に答える