2

テーブルの内容のランダムな「順列」を取得するためのオプションは次のとおりです。
ORDER BY RAND()

私の質問は、これがこのコンテキストでどのように機能するかです。RAND()「コンパレータ」として使用するために呼び出しますか?RAND比較するのに何の引数も取らないことは問題ではないでしょうか?

4

3 に答える 3

2

MySQLのこのrand()関数は、呼び出されるたびにランダムな値を返します。

このプロセスで何が起こるかというと、ソート ルーチンがレコードを読み取り、rand 関数を呼び出し、ランダムな値を持つ列を暗黙的にレコードに追加します。この列はビューから隠されています。表示されることはありませんが、順序付けに使用されます。

論理的には、これは次と同等です。

select <columns in t>
from (select t.*, rand() as ordering
      from t
     ) t
order by ordering
于 2013-04-14T19:41:33.770 に答える
2

ランド()

範囲 0 <= v < 1.0 のランダムな浮動小数点値 v を返します。

オプションで提供できますseeding value

virtual column実行中はwithとして扱われrandom numbersます。次にSQL engine、この列をsortテーブルの内容に使用し、それ (動的列) を通常の列 (浮動小数点値を持つ) として扱います。

于 2013-04-14T19:40:45.733 に答える