Mysql 简明教程

MySQL - Select Random Records

您是否曾经参加过在线考试?如果是,那么您是否有想过这些问题显示的顺序是如何随机的?这些问题通常存储在测试应用程序的数据库中,并逐个随机显示。

在应用程序中使用数据库时,会出现需要从表对象中随机选择记录的情况。MySQL 没有为此提供内置功能。

Selecting Random Records in MySQL

为了在 MySQL 中选择随机记录,可以使用 ORDER BY RAND() 子句。RAND() 函数与 SELECT 查询一起用于一个接一个或同时批量检索存储的数据。

The MySQL RAND() Function

MySQL RAND() 函数返回一个结果集,其中包含原始表中的所有记录,并按完全随机顺序排列。它通常与 ORDER BY 子句中的 SELECT 语句一起使用。

Syntax

以下是 RAND() 函数与 ORDER BY 子句一起使用的基本语法:

SELECT column_name(s) FROM table_name ORDER BY RAND();

Example

以下示例演示了与 ORDER BY 子句一起使用 RAND() 函数的情况。此处,我们首先创建一个表“CUSTOMERS”并向其中插入一些值。

CREATE TABLE CUSTOMERS(
   ID int NOT NULL AUTO_INCREMENT,
   NAME varchar(20),
   AGE int,
   PRIMARY KEY(Id)
);

现在,使用如下所示的 INSERT 语句向此表中插入值:

INSERT INTO CUSTOMERS (NAME, AGE) VALUES ('John',23);
INSERT INTO CUSTOMERS (NAME, AGE) VALUES ('Larry',21);
INSERT INTO CUSTOMERS (NAME, AGE) VALUES ('David',21);
INSERT INTO CUSTOMERS (NAME, AGE) VALUES ('Carol',24);
INSERT INTO CUSTOMERS (NAME, AGE) VALUES ('Bob',27);
INSERT INTO CUSTOMERS (NAME, AGE) VALUES ('Mike',29);
INSERT INTO CUSTOMERS (NAME, AGE) VALUES ('Sam',26);

获得的 CUSTOMERS 表如下:−

现在,让我们使用 RAND() 函数结合 SELECT 语句以随机顺序检索 CUSTOMERS 表的记录:

SELECT * FROM CUSTOMERS ORDER BY RAND();

Output

以下是以上查询的输出:

LIMIT with RAND() Function

您还可以使用 RAND() 函数和 LIMIT 子句来限制随机检索记录的数量

Syntax

以下是与 RAND() 函数一同使用 LIMIT 的语法 -

SELECT column_name(s) FROM table_name
ORDER BY RAND() LIMIT int_value;

Example

在此示例中,使用以下查询从“CUSTOMERS”表中随机检索了数量有限的记录 -

SELECT * FROM CUSTOMERS ORDER BY RAND() LIMIT 1;

以上代码的输出如下所示 −

每次执行此查询时,您将得到一个不同的随机记录 -

SELECT * FROM CUSTOMERS ORDER BY RAND() LIMIT 1;

产生的结果如下 −

您还可以通过修改 LIMIT 值来增加要显示的记录的上限,如下所示 -

SELECT * FROM CUSTOMERS ORDER BY RAND() LIMIT 2;

我们得到了如下输出 −

Random Records Using Client Program

我们还可以使用客户端程序选择随机记录。

Syntax

Example

以下是这些程序 −