MySQL 查找随机记录

一、MySQL 查找随机记录 介绍

有时我们想从数据库表中获取随机记录。例如,我们的表已经存储了几个引号,并且需要在 GUI 上显示一个随机的引号。在这种情况下,我们将编写一个 SQL 查询来从表中获取随机记录。在本节中,我们将了解如何从表中选择随机记录。

现实世界的例子:

  1. 在线考试,我们将在其中显示一个随机问题。
  2. 在电子商务网站的主页上随机显示特色商品。
  3. 显示来自画廊的随机图片并将其用作特色图片。

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 首先对整个表进行排序,然后返回随机的表。

查询速度还取决于表中可用的行数。因此,如果我们的表有更多行,则为每一行生成随机记录需要更多时间。

热门文章

优秀文章