Skip to content

RAND()

函数说明

RAND() 函数用于生成一个介于 0 和 1 之间的 Float64 类型的随机数。它不接受任何参数,每次调用都会产生一个不可预测且不重复的随机数。

如果需要从表中随机选择数据,可以使用 RAND() 函数生成一个随机数,你可以根据这个随机数对表中的数据使用 ORDER BY 进行排序。例如:

-- 从表中随机获取所有数据,并按照随机顺序进行排序,每次查询结果的顺序可能都不同
SELECT * FROM table ORDER BY RAND();

函数语法

> RAND([seed])

参数释义

参数 说明
seed 可选参数。是一个整数值,用于指定生成随机数时的种子值。如果不指定 seed 参数,则默认以当前时间为种子值。返回值类型与输入类型保持一致。
MatrixOne 暂不支持指定种子值。

示例

  • 示例 1
mysql> SELECT RAND();
+---------------------+
| rand()              |
+---------------------+
| 0.25193285156620004 |
+---------------------+
1 row in set (0.00 sec)
  • 示例 2
CREATE TABLE Users (
    ID INT PRIMARY KEY AUTO_INCREMENT,
    UserName VARCHAR(255) NOT NULL,
    Email VARCHAR(255));

INSERT INTO Users (UserName, Email) VALUES
    ('John', 'john@example.com'),
    ('Jane', 'jane@example.com'),
    ('Alice', 'alice@example.com'),
    ('Bob', 'bob@example.com');

-- 从 Users 表中随机选择一个用户的信息
mysql> SELECT * FROM Users ORDER BY RAND() LIMIT 1;
+------+----------+-----------------+
| id   | username | email           |
+------+----------+-----------------+
|    4 | Bob      | bob@example.com | -- Bob 的信息被随机选中
+------+----------+-----------------+
1 row in set (0.01 sec)

-- 再次执行上述查询,选中的可能会是另一个用户
mysql> SELECT * FROM Users  ORDER BY RAND() LIMIT 1;
+------+----------+-------------------+
| id   | username | email             |
+------+----------+-------------------+
|    3 | Alice    | alice@example.com | -- Alice 的信息被随机选中
+------+----------+-------------------+
1 row in set (0.01 sec)

限制

MatrixOne 暂不支持指定 RAND(seed) 函数的种子值(即 seed 参数)。