使用MYSQL创建随机数

时间:2013-02-10 14:16:28

标签: mysql sql

我想知道有没有办法选择100到500之间随机生成的数字以及一个选择查询。

例如:SELECT name, address, random_number FROM users

我不必将此数字存储在db中,只能将其用于显示目的。

我试过这样的东西,但它无法开始工作..

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

希望有人帮助我。 谢谢

6 个答案:

答案 0 :(得分:135)

这应该给你想要的东西:

FLOOR(RAND() * 401) + 100

通常,FLOOR(RAND() * (<max> - <min> + 1)) + <min>会在<min&gt;之间生成一个数字。和<max>包含在内。

<强>更新

这个完整的陈述应该有效:

SELECT name, address, FLOOR(RAND() * 401) + 100 AS `random_number` 
FROM users

答案 1 :(得分:9)

RAND产生数字0&lt; = v&lt; 1.0(参见documentation)您需要使用ROUND来确保您可以获得上限(在这种情况下为500)和下限(在这种情况下为100)

所以要产生你需要的范围:

SELECT name, address, ROUND(100.0 + 400.0 * RAND()) AS random_number
FROM users

答案 2 :(得分:4)

除了这个答案,还要创建一个像

这样的函数
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之间的随机数

答案 3 :(得分:3)

您可以使用FLOOR(RAND() * n) as randnum创建一个随机数(n是一个整数),但是如果您不需要重复相同的随机数,那么您将需要稍微存储在临时表中。因此,您可以使用where randnum not in (select * from temptable) ...

进行检查

答案 4 :(得分:1)

这两个都运行良好:

select round(<maxNumber>*rand())

FLOOR(RAND() * (<max> - <min> + 1)) + <min> // generates a number
between <min> and <max> inclusive.

答案 5 :(得分:0)

这是找到从ij的整数的正确公式,其中i <= R <= j

FLOOR(min+RAND()*(max-min))