使用MYSQL创建随机数

TNK*_*TNK 95 mysql sql

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

例如: SELECT name, address, random_number FROM users

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

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

SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users
Run Code Online (Sandbox Code Playgroud)

希望有人帮助我.谢谢

Ja͢*_*͢ck 144

这应该给你想要的:

FLOOR(RAND() * 401) + 100
Run Code Online (Sandbox Code Playgroud)

通常,FLOOR(RAND() * (<max> - <min> + 1)) + <min>生成介于<min>和<max>包含之间的数字.

更新

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

SELECT name, address, FLOOR(RAND() * 401) + 100 AS `random_number` 
FROM users
Run Code Online (Sandbox Code Playgroud)

  • `RAND()`,`UUID()`,`NOW()`是不确定的函数.应避免将这些函数调用写入bin日志进行复制.例如.`INSERT INTO t SET ID = UUID();`将导致`ID`字段的值在主站和从站上不同.相反,它需要写成`SET @uuid:= UUID();`,然后`INSERT INTO t SET ID = @ uuid;`,然后在单个事务中运行它们.这将是复制安全的.这个问题有点偏离主题.它没有说你的答案有任何问题.:) (3认同)

Ed *_*eal 10

作为RAND产生的数,0 <= V <1.0(参见文档)需要使用ROUND,以确保可以(在这种情况下100)(在此情况下500)得到的上界和下界

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

SELECT name, address, ROUND(100.0 + 400.0 * RAND()) AS random_number
FROM users
Run Code Online (Sandbox Code Playgroud)


小智 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; 
Run Code Online (Sandbox Code Playgroud)

并打电话给

SELECT myrandom(100,300);

这为您提供了 100 到 300 之间的随机数