我想知道有没有办法选择100到500之间随机生成的数字以及一个选择查询。
例如:SELECT name, address, random_number FROM users
我不必将此数字存储在db中,只能将其用于显示目的。
我试过这样的东西,但它无法开始工作..
SELECT name, address, FLOOR(RAND() * 500) AS random_number FROM users
希望有人帮助我。 谢谢
答案 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)
这是找到从i
到j
的整数的正确公式,其中i <= R <= j
FLOOR(min+RAND()*(max-min))