MySQL 查找随机记录
一、MySQL 查找随机记录 介绍
有时我们想从数据库表中获取随机记录。例如,我们的表已经存储了几个引号,并且需要在 GUI 上显示一个随机的引号。在这种情况下,我们将编写一个 SQL 查询来从表中获取随机记录。在本节中,我们将了解如何从表中选择随机记录。
现实世界的例子:
- 在线考试,我们将在其中显示一个随机问题。
- 在电子商务网站的主页上随机显示特色商品。
- 显示来自画廊的随机图片并将其用作特色图片。
MySQL不提供任何用于从数据库表中返回随机行的内置语句。我们可以借助RAND() 函数来实现这一点。
二、MySQL 查找随机记录 语法
以下是从数据库表中选择随机记录的语法:
SELECT * FROM table_name
ORDER BY RAND()
LIMIT N;
让我们详细了解一下语句的参数:
- 首先,我们指定了要选择随机记录的表名。
- 其次,我们指定了RAND函数,它为表中的每一行返回随机值。
- 第三,我们指定了一个ORDER BY这个子句按 RAND() 函数生成的随机数对所有表行进行排序。
- 最后,我们指定LIMIT子句从数据库表中选择 N 个随机记录。
三、MySQL 查找随机记录 示例
让我们通过一个例子来了解如何从数据库表中生成随机记录。首先,我们将使用以下语句创建一个名为“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@javatpoint.com'),
('Bob', 7, 'bob@javatpoint.com'),
('Steven', 8, 'steven@javatpoint.com'),
('Donald', 6, 'donald@javatpoint.com'),
('Jenifer', 9, 'jenifer@javatpoint.com'),
('Peter', 9, 'peter@javatpoint.com'),
('Alexandar', 7, 'alexandar@javatpoint.com');
接下来,我们将使用查询显示表中的所有记录,如下所示:
mysql> SELECT * FROM students;
现在,我们将执行以下查询以从表中选择随机记录。假设我们要从表中随机选择5 条记录;我们将查询数据如下:
mysql> SELECT id, name, email_id FROM students ORDER BY RAND() LIMIT 5;
它返回以下输出:
如果我们再次运行上述查询,我们将得到如下输出:
请注意,每当我们执行 RAND() 函数时,它总是返回不同的结果,因为它是随机的。因此,此技术仅适用于小桌子。在大桌子的情况下,它会很慢。这是因为 MySQL 首先对整个表进行排序,然后返回随机的表。
查询速度还取决于表中可用的行数。因此,如果我们的表有更多行,则为每一行生成随机记录需要更多时间。
热门文章
优秀文章