使用MYSQL创build一个随机数

我想知道是否有一种方法来select100到500之间的随机生成的数字以及select查询。

例如: SELECT name, address, random_number FROM users

我不必在db中存储这个数字,只能用它来显示目的。

我试过这样的东西,但它不能工作..

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

希望有人帮助我。 谢谢

这应该给你想要的:

 FLOOR(RAND() * 401) + 100 

一般来说, FLOOR(RAND() * (<max> - <min> + 1)) + <min>生成<min >和<max>之间的数字。

更新

这个完整的陈述应该工作:

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

由于RAND产生的数字为0 <= v <1.0(请参阅文档 ),您需要使用ROUND来确保您可以获得上限(本例中为500)和下限(本例中为100)

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

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

你可以使用FLOOR(RAND() * n) as randnum (n是一个整数)来创build一个随机数,但是如果你不需要重复相同的随机数,那么你将不得不稍微存储一个临时表。 所以你可以检查它与where randnum not in (select * from temptable)

除了这个答案,创build一个像

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

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

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