【MySQL】ランダムにデータを入れる方法

SQLと書かれたタイトル SQL

今回は、INSERTやUPDATE文を使用して、1つのカラムに、ランダムにいくつかのデータを入れる方法について解説します。

実際のコード

実際のコードは次のようになります。

このように書くと、約10%のデータにAPPLEが入り、残りの約10%のデータにORANGEが入ります。
つまり、全体の約10%のデータにAPPLE、全体の約90%×10%=9%のデータにORANGEが入ることになります。

RAND()を2回使用していますが、1回目の判定と、2回目の判定では別の値となるので、注意が必要です。

同じ確率で設定する

すべてを同じ割合で設定したい場合、次のようになります。(xで設定したい場合)

例えばすべて0.1…10%のデータに値を入れたい場合、0.1/(1-0.1)=0.1/0.9=0.11111…となるので、次のようになります。

もっといい方法

もっといい方法があったので、追記します。

こうすると、初めに設定したランダム関数について条件を指定するため、条件ごとに値を変える必要がありません。

詳しく説明すると、floor(rand*10 + 1)で、1~10の値をランダムに作ります。そして、CASE文で、作成した値を条件に、文字列を登録します。

例えば、1/20の確率で値を入れたいときは、floor(rand*10 + 1)をfloor(rand*20 + 1)と書き換えればできます。

タイトルとURLをコピーしました