MySQL - RAND() 函数
MySQL 的 RAND() 函数通常返回 0 到 1.0 范围内的随机浮点值。但是,要获取 i 到 j 范围内的随机整数 R,请使用以下表达式:
FLOOR(i + RAND() * (j − i))
例如,要获取 7 到 12 范围内的随机整数,请使用以下语句:
SELECT FLOOR(7 + (RAND() * 5));
RAND() 函数还接受一个可选参数 [N],用作随机数生成器的"种子"值。
语法
以下是 MySQL RAND() 函数的语法 -
RAND([N])
参数
此函数接受一个可选参数。它可以是一个整数或一个表达式,用作随机数生成器的"种子"值。如果使用相同的种子,您将获得相同的随机数序列。
使用常量初始化参数时,种子会在语句准备完成、执行之前初始化一次。
使用非常量初始化参数(例如列名)时,种子会在每次调用 RAND() 时使用值初始化。
返回值
此函数返回介于 0 到 1 之间的随机浮点值。
示例
在下面的示例中,我们使用 MySQL RAND() 函数生成介于 0 到 1 之间的随机浮点数 -
SELECT RAND() As Result;
输出
上述查询的输出如下所示 -
| Result |
|---|
| 0.6566204965641913 |
示例
我们也可以将表达式作为参数传递给此函数,如下所示 -
SELECT RAND(225+(RAND()*9)) As Result;
输出
这将产生以下结果 -
| Result |
|---|
| 0.6966031060522451 |
示例
以下是此函数的另一个示例 -
SELECT RAND( ), RAND( ), RAND( );
输出
这将产生以下结果 -
| RAND() | RAND() | RAND() |
|---|---|---|
| 0.7602040020378343 | 0.38593764545948955 | 0.6490762519175897 |
示例
要获取 10 到 20 范围内的随机整数,请使用以下命令查询:
SELECT FLOOR(10 + (RAND() * 10)) As Result;
输出
输出结果如下:-
| Result |
|---|
| 18 |
示例
我们可以使用 ORDER BY RAND() 来随机化一组行或值。为此,让我们使用以下查询创建一个名为 CUSTOMERS 的表:-
CREATE TABLE CUSTOMERS ( ID INT AUTO_INCREMENT, NAME VARCHAR(20) NOT NULL, AGE INT NOT NULL, ADDRESS CHAR (25), SALARY DECIMAL (18, 2), PRIMARY KEY (ID) );
以下查询将 7 条记录添加到上面创建的表中 -
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ), (2, 'Khilan', 25, 'Delhi', 1500.00 ), (3, 'Kaushik', 23, 'Kota', 2000.00 ), (4, 'Chaitali', 25, 'Mumbai', 6500.00 ), (5, 'Hardik', 27, 'Bhopal', 8500.00 ), (6, 'Komal', 22, 'Hyderabad', 4500.00 ), (7, 'Muffy', 24, 'Indore', 10000.00 );
要验证记录是否已插入,请执行以下查询 -
Select * From CUSTOMERS;
以下是 CUSTOMERS 表 -
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 3 | Kaushik | 23 | Kota | 2000.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 6 | Komal | 22 | Hyderabad | 4500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
现在,我们将使用 RAND() 函数和 ORDER BY 来随机化表的顺序 -
SELECT * FROM CUSTOMERS ORDER BY RAND();
执行给定查询后,输出如下 -
| ID | NAME | AGE | ADDRESS | SALARY |
|---|---|---|---|---|
| 3 | Kaushik | 23 | Kota | 2000.00 |
| 1 | Ramesh | 32 | Ahmedabad | 2000.00 |
| 5 | Hardik | 27 | Bhopal | 8500.00 |
| 2 | Khilan | 25 | Delhi | 1500.00 |
| 4 | Chaitali | 25 | Mumbai | 6500.00 |
| 7 | Muffy | 24 | Indore | 10000.00 |
| 6 | Komal | 22 | Hyderabad | 4500.00 |