102

選択クエリとともに、100から500の間でランダムに生成された数値を選択する方法があることを知りたいです。

例えば:SELECT name, address, random_number FROM users

この番号をdbに保存する必要はなく、目的を表示するためにのみ使用します。

こんな感じでやってみましたが、うまくいきません。

SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users

誰かが私を助けてくれることを願っています。ありがとうございました

4

6 に答える 6

155

これにより、必要なものが得られます。

FLOOR(RAND() * 401) + 100

通常、>以上FLOOR(RAND() * (<max> - <min> + 1)) + <min>の数値を生成します。<min<max>

アップデート

この完全なステートメントは機能するはずです:

SELECT name, address, FLOOR(RAND() * 401) + 100 AS `random_number` 
FROM users
于 2013-02-10T14:20:35.433 に答える
11

RAND数値 0 <= v < 1.0 (ドキュメントを参照) を生成するため、上限 (このROUND場合は 500) と下限 (この場合は 100) を取得できるようにするために使用する必要があります。

したがって、必要な範囲を生成するには:

SELECT name, address, ROUND(100.0 + 400.0 * RAND()) AS random_number
FROM users
于 2013-02-10T14:28:09.593 に答える
5

この回答に加えて、次のような関数を作成します

CREATE FUNCTION myrandom(
    pmin INTEGER,
    pmax INTEGER
)
RETURNS INTEGER(11)
DETERMINISTIC
NO SQL
SQL SECURITY DEFINER
BEGIN
  RETURN floor(pmin+RAND()*(pmax-pmin));
END; 

のように呼び出します

SELECT myrandom(100,300);

これにより、100〜300の乱数が得られます

于 2016-03-15T16:58:07.443 に答える
3

(n は整数)を使用して乱数を作成できますFLOOR(RAND() * n) as randnumが、同じ乱数を繰り返す必要がない場合は、一時テーブルに保存する必要があります。だからあなたはそれに対してそれをチェックすることができますwhere randnum not in (select * from temptable)...

于 2013-02-10T14:24:48.660 に答える
0

iこれは、どこからjどこまでの整数を見つけるための正しい式ですi <= R <= j

FLOOR(min+RAND()*(max-min))
于 2014-03-27T11:29:37.027 に答える