MySQL Select Random Records

2025年3月17日 | 阅读 3 分钟

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

真实世界中的例子

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

MySQL 没有提供用于返回数据库表随机行的内置语句。我们可以借助 RAND() 函数 来实现。

语法

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

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

  • 首先,我们指定了我们要从中选择随机记录的表名
  • 其次,我们指定了 RAND 函数,该函数为表中的每一行返回随机值。
  • 第三,我们指定了一个 ORDER BY 子句,该子句按 RAND() 函数生成的随机数对所有表行进行排序。
  • 最后,我们指定了 LIMIT 子句,该子句从数据库表中选取 N 条随机记录。

示例

让我们通过一个例子来理解如何从数据库表中生成随机记录。首先,我们将使用以下语句创建一个名为 'students' 的表

接下来,我们将使用 INSERT 语句 填充记录到此表中,如下所示

接下来,我们将使用以下查询显示表中的所有记录


MySQL Select Random Records

现在,我们将执行以下查询以从表中选择随机记录。假设我们要从表中选择五条随机记录,我们将按如下方式查询数据

它会返回以下输出

MySQL Select Random Records

如果我们再次运行上述查询,我们将获得以下输出

MySQL Select Random Records

需要注意的是,每当我们执行 RAND() 函数时,它都会返回不同的结果,因为它就是随机的。因此,这种技术只对小型表有效。对于大表,它会很慢。这是因为 MySQL 会先对整个表进行排序,然后再返回随机的行。

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


下一主题MySQL Extract