テーブルの内容のランダムな「順列」を取得するためのオプションは次のとおりです。
ORDER BY RAND()
私の質問は、これがこのコンテキストでどのように機能するかです。RAND()
「コンパレータ」として使用するために呼び出しますか?RAND
比較するのに何の引数も取らないことは問題ではないでしょうか?
テーブルの内容のランダムな「順列」を取得するためのオプションは次のとおりです。
ORDER BY RAND()
私の質問は、これがこのコンテキストでどのように機能するかです。RAND()
「コンパレータ」として使用するために呼び出しますか?RAND
比較するのに何の引数も取らないことは問題ではないでしょうか?
MySQLのこのrand()
関数は、呼び出されるたびにランダムな値を返します。
このプロセスで何が起こるかというと、ソート ルーチンがレコードを読み取り、rand 関数を呼び出し、ランダムな値を持つ列を暗黙的にレコードに追加します。この列はビューから隠されています。表示されることはありませんが、順序付けに使用されます。
論理的には、これは次と同等です。
select <columns in t>
from (select t.*, rand() as ordering
from t
) t
order by ordering
範囲 0 <= v < 1.0 のランダムな浮動小数点値 v を返します。
オプションで提供できますseeding value
virtual column
実行中はwithとして扱われrandom numbers
ます。次にSQL engine
、この列をsort
テーブルの内容に使用し、それ (動的列) を通常の列 (浮動小数点値を持つ) として扱います。