我想知道是否有一种方法可以选择 100 到 500 之间随机生成的数字以及选择查询。
例如:SELECT name, address, random_number FROM users
我不必将此数字存储在数据库中,仅用于显示目的。
我试过这样的东西,但它无法工作..
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
AsRAND
产生一个数字 0 <= v < 1.0 (请参阅文档),您需要使用它ROUND
来确保您可以获得上限(在这种情况下为 500)和下限(在这种情况下为 100)
所以要产生你需要的范围:
SELECT name, address, ROUND(100.0 + 400.0 * RAND()) AS random_number
FROM users
除了这个答案,创建一个类似的函数
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 之间的随机数
您可以使用(n 是一个整数)创建一个随机数FLOOR(RAND() * n) as randnum
,但是如果您不需要重复相同的随机数,那么您将不得不在一些临时表中存储。所以你可以检查它与where randnum not in (select * from temptable)
...
这些都运行良好:
select round(<maxNumber>*rand())
FLOOR(RAND() * (<max> - <min> + 1)) + <min> // generates a number
between <min> and <max> inclusive.
i
这是从j
哪里找到整数的正确公式i <= R <= j
FLOOR(min+RAND()*(max-min))