选择SQL中的前10行

当我们在SQL数据库中工作时,我们可能会遇到需要从给定表中获取特定行子集的实例。这允许我们限制从表中获取值所需的资源。

幸运的是,在SQL中,我们可以访问LIMIT子句,它允许我们控制给定结果集中返回的行数。当我们处理大型数据集时,这个特性非常有用,并且实际上不需要整行,而是它的一个子集。这可以是为了获得数据的布局或表示。

在本教程中,我们将学习如何在SQL数据库中使用和使用LIMIT子句来指定我们希望从数据库检索的行数。

要求:

在深入了解SQL中LIMIT子句的工作原理和用法之前,让我们先讨论一下本教程的一些基本要求。

要跟随这篇文章,你需要以下几点:

  1. MySQL 8.0及以上版本与MySQL 5兼容
  2. 访问Sakila示例数据库
  3. 从目标数据库查询行的权限(读访问)

满足了给定的需求后,我们可以继续本教程。

SQL限制

在SQL中,LIMIT子句允许我们限制从给定SQL查询返回的行数。例如,在select语句中,我们可以选择只查看前10行,而不是返回可能包含超过1000条记录的表中的所有行。

以下是SQL中LIMIT子句的基本语法:

SELECT col1, col2,…

从tbl_name

限制num_rows;

在本例中,我们将LIMIT子句与SELECT语句结合使用。

根据给定的语法,“tbl_name”表示我们希望从中检索数据的表的名称。

“num_rows”允许我们指定在结果集中返回的最大行数。

例1:限制行数

LIMIT子句最常见和最基本的作用是设置结果集中包含的最大行数。

假设我们想要使用Sakila样本数据库中的“film”表。然而,由于我们不想获取所有相关的行,我们可以选择前10行,如下面的示例子句所示:

SELECT * FROM film

限制10;

一旦我们运行给定的查询,我们应该得到如下输出:

在本例中,我们使用LIMIT子句将结果集限制为10行。这将从结果中获取前10行。

例2:使用OFFSET值

在某些情况下,我们可能希望跳过或省略特定数量的行。例如,假设我们只希望检索5个元素,但是我们希望从位置20开始。我们可以使用OFFSET参数,它允许我们告诉LIMIT子句我们希望从哪个位置开始。

当你需要在一个大数据集中实现分页时,这是特别有用的,如下面的例子所示:

SELECT film_id, title, release_year, length FROM film

限位10偏移量20;;

这将返回从位置20开始的10行,如下所示:

从给定的结果中可以看到,起始“film_id”从位置21开始,一直到位置30。

例3:使用Order BY子句

LIMIT子句的另一种常见用法是与ORDER BY子句结合使用。这允许我们检索基于特定顺序的特定行数。这可以包括基本排序(升序或降序)等。

例如,假设我们想从“film”表中检索前10个最长的电影。我们可以使用ORDER BY子句根据长度对值进行排序,然后限制前10行。

示例如下:

SELECT f.f film_id, f.f title, f.f length

选自电影f

按长度排序

限制10;

在本例中,我们使用ORDER BY子句按降序(从高到低)对行排序,然后使用LIMIT子句获取前10行。

结果集如下:

好了!

结论

在这篇文章中,我们学习了在SQL数据库中使用LIMIT子句的基本原理和高级特性。