有时想从数据库表中获取随机记录。 例如,无涯教程的表存储了多个引号,因此需要在GUI上显示随机引号。在这种情况下,将编写一个SQL查询以从表中获取随机记录。在本节中,将看到如何从表中选择随机记录。
MySQL不提供任何内置语句用于从数据库表返回随机行。可以借助 RAND()函数 完成此操作。
以下是从数据库表中选择随机记录的语法:
SELECT * FROM table_name ORDER BY RAND() LIMIT N;
让无涯教程详细了解该语句的参数:
- 首先,指定了要选择随机记录的table_name 表名。
- 第二,指定了 RAND 函数,该函数为表中的每一行返回随机值。
- 第三,指定了 ORDER BY 。此子句按RAND()函数生成的随机数对所有表行进行排序。
- 最后,指定了 LIMIT 子句从数据库表中选择N条随机记录。
通过示例了解如何从数据库表生成随机记录。首先,将使用以下语句创建一个名为" students" 的表:
mysql> CREATE TABLE students( id int NOT NULL AUTO_INCREMENT, name varchar(45) NOT NULL, class int NOT NULL, email_id varchar(65) NOT NULL, PRIMARY KEY (id) );
接下来,将使用INSERT 语句将记录填充到该表中,如下所示:
INSERT INTO students (name, class, email_id) VALUES (Stephen, 6, stephen@learnfk.com), (Bob, 7, bob@learnfk.com), (Steven, 8, steven@learnfk.com), (Donald, 6, donald@learnfk.com), (Jenifer, 9, jenifer@learnfk.com), (Peter, 9, peter@learnfk.com), (Alexandar, 7, alexandar@learnfk.com);
接下来,将使用查询显示表中的所有记录,如下所示:
mysql> SELECT * FROM students;

现在,将执行以下查询以从表中选择随机记录。假设要从表格中选择五个随机记录;将查询数据如下:
mysql> SELECT id, name, email_id FROM students ORDER BY RAND() LIMIT 5;
它返回以下输出:

请注意,每当无涯教程执行RAND()函数时,它总是返回不同的结果,因为它是随机的。