我想创建一个mysql查询,在其中我在两个值(包括那些值(在下面的示例中为1和5))之间选择一个随机数,这个随机值构成where子句的一部分。如何做到这一点。我的代码如下: SELECT * WHERE Col7 = (RAND()*(5-1+1)+1)
SELECT * WHERE Col7 = (RAND()*(5-1+1)+1)
h4cxqtbf1#
您可能需要对随机生成的数字进行四舍五入如果您需要一个介于1和5之间的随机数(包括两者),您的查询可能是:
SELECT * WHERE Col7 = FLOOR(1 + RAND() * (5 + 1 - 1))
如果您需要一个介于2和7之间的随机数(包括两者),您的查询可能是:
SELECT * WHERE Col7 = FLOOR(2 + RAND() * (7 + 1 - 2))
xjreopfe2#
只是为了解决方案的多样性
SET @rnd := rand(); SELECT * WHERE Col7 = CASE WHEN @rnd < 0.2 THEN 1 WHEN @rnd < 0.4 THEN 2 WHEN @rnd < 0.6 THEN 3 WHEN @rnd < 0.8 THEN 4 ELSE 5 END
qq24tv8q3#
您可以使用以下命令 RAND 以及 FLOOR :
RAND
FLOOR
SELECT FLOOR(1 + (RAND() * 5));
因此,您的查询如下所示:
SELECT * FROM table_name WHERE Col7 = FLOOR(1 + (RAND() * 5))
返回随机浮点值 v 在范围内 0 <= v < 1.0 . 获取随机整数 R 在范围内 i <= R < j ,使用表达式 FLOOR(i + RAND() * (j − i)) . 例如,要获得范围内的随机整数 7 <= R < 12 ,使用以下语句: SELECT FLOOR(7 + (RAND() * 5)); source:https用法://dev.mysql.com/doc/refman/8.0/en/mathematic functions.html#function#rand也可以创建新的 FUNCTION 用这些来代替 RAND 功能:
v
0 <= v < 1.0
R
i <= R < j
FLOOR(i + RAND() * (j − i))
7 <= R < 12
SELECT FLOOR(7 + (RAND() * 5));
FUNCTION
CREATE FUNCTION RAND_INT (minVal INT, maxVal INT) RETURNS INT DETERMINISTIC RETURN FLOOR(minVal + (RAND() * (maxVal + 1 - minVal)));
您可以使用创建的函数 RAND_INT 这样地:
RAND_INT
SELECT * FROM table_name WHERE Col7 = RAND_INT(1, 5);
3条答案
按热度按时间h4cxqtbf1#
您可能需要对随机生成的数字进行四舍五入
如果您需要一个介于1和5之间的随机数(包括两者),您的查询可能是:
如果您需要一个介于2和7之间的随机数(包括两者),您的查询可能是:
xjreopfe2#
只是为了解决方案的多样性
qq24tv8q3#
您可以使用以下命令
RAND
以及FLOOR
:因此,您的查询如下所示:
返回随机浮点值
v
在范围内0 <= v < 1.0
. 获取随机整数R
在范围内i <= R < j
,使用表达式FLOOR(i + RAND() * (j − i))
. 例如,要获得范围内的随机整数7 <= R < 12
,使用以下语句:SELECT FLOOR(7 + (RAND() * 5));
source:https用法://dev.mysql.com/doc/refman/8.0/en/mathematic functions.html#function#rand也可以创建新的
FUNCTION
用这些来代替RAND
功能:您可以使用创建的函数
RAND_INT
这样地: