MySQL 选择随机记录

MySQL 选择随机记录

有时我们想从数据库表中获取随机记录。 例如 ,我们的表中存储了几个名言,需要在GUI上显示随机名言。在这种情况下,我们将编写一个SQL查询从表中获取随机记录。在本节中,我们将看到如何从表中选择一条随机记录。

真实世界的例子:

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

MySQL 没有提供任何内置语句来返回数据库表中的随机行。我们可以借助一个 ** RAND()函数 ** 来实现这一点。

语法

以下是从数据库表中选择随机记录的语法:

SELECT * FROM table_name
ORDER BY RAND()
LIMIT N;

让我们详细了解语句的参数:

  • 首先,我们指定了要选择随机记录的表名。
  • 其次,我们指定了返回表中每一行随机值的 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@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;

MySQL 选择随机记录

现在,我们将执行下面的查询来从表中选择随机记录。假设我们想要从表中选择 五个随机记录 ,我们将查询数据如下:

mysql> SELECT id, name, email_id FROM students
ORDER BY RAND() LIMIT 5;

它返回以下输出:

MySQL 选择随机记录

如果我们再次运行上面的查询,我们将得到以下输出:

MySQL 选择随机记录

注意:我们使用RAND()函数时,每次都会返回不同的结果,因为它是随机的。 因此,这种技术只在小表中有效。对于大表来说,会很慢。这是因为MySQL首先对整个表进行排序,然后再返回随机的记录。

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

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程