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;

输出

上述查询的输出如下所示:

结果
0.6566204965641913

示例

我们还可以将表达式作为参数传递给此函数,如下所示:

SELECT RAND(225+(RAND()*9)) As 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;

输出

输出如下所示:

结果
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
广告