我想创建一个 mysql 查询,在其中我在两个值之间选择一个随机数,包括那些值(在我下面的示例中为 1 和 5),并且该随机值构成我的 where 子句的一部分。如何才能做到这一点。
我的代码如下:
SELECT * WHERE Col7 = (RAND()*(5-1+1)+1)
最佳答案
SELECT FLOOR(1 + (RAND() * 5));
因此您的查询如下所示:
SELECT * FROM table_name WHERE Col7 = FLOOR(1 + (RAND() * 5))
Returns a random floating-point value
v
in the range0 <= v < 1.0
. To obtain a random integerR
in the rangei <= R < j
, use the expressionFLOOR(i + RAND() * (j − i))
. For example, to obtain a random integer in the range the range7 <= R < 12
, use the following statement:SELECT FLOOR(7 + (RAND() * 5));
source: https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_rand
您还可以创建一个新的 FUNCTION
使用这些而不是 RAND
功能:
CREATE FUNCTION RAND_INT (minVal INT, maxVal INT)
RETURNS INT DETERMINISTIC
RETURN FLOOR(minVal + (RAND() * (maxVal + 1 - minVal)));
您可以使用创建的函数RAND_INT
像这样:
SELECT * FROM table_name WHERE Col7 = RAND_INT(1, 5);
关于MySQL选择随机整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50292338/