跳到主要内容

SQL SELECT LIMIT、TOP、FETCH FIRST

提示

1.LIMIT 关键字的功能LIMIT 关键字用于指定在 SQL 查询结果中返回的记录数量。例如,SELECT first_name, age FROM Customers LIMIT 2; 将只返回前2条记录。

2.结合 OFFSET 使用 LIMITOFFSET 关键字与 LIMIT 结合使用,用于指定结果集的起始位置。例如,SELECT first_name, last_name FROM Customers LIMIT 2 OFFSET 3; 会跳过前三条记录,然后返回接下来的两条记录。

3.不同数据库系统的替代语法:不同的数据库系统使用不同的语法来实现限制返回记录数的功能。例如,SQL Server 和 MS Access 使用 TOP 关键字,Oracle 使用 FETCH FIRST 子句。此外,SQL Server 中的 TOP 可以搭配 PERCENT 关键字或 WITH TIES 子句使用,以返回总行数的一定百分比或在最后一行有相似值时返回更多行。

SQL 的 LIMIT 关键字允许我们指定结果集中的记录数量。

示例

FROM Customers
LIMIT 2;

这里,SQL 命令选择了表中的前 2 行。

SQL LIMIT 搭配 OFFSET 子句

OFFSET 关键字与 LIMIT 一起使用,用于指定从哪一行开始选择数据。例如,

-- OFFSET 3 排除前三个结果

SELECT first_name, last_name
FROM Customers
LIMIT 2 OFFSET 3;

这里,SQL 命令从第四行开始选择 2 行。OFFSET 3 表示排除了前 3 行。

如何在 SQL 中使用 LIMIT 子句和 OFFSET

注意:并非所有数据库管理系统(DBMS)都支持 LIMIT 子句。不同的 DBMS 使用不同的关键字来选择固定数量的行。例如,

关键字数据库系统
TOPSQL Server, MS Access
LIMITMySQL, PostgreSQL, SQLite
FETCH FIRSTOracle

SQL TOP 子句

TOP 关键字用于替代 LIMIT,适用于以下数据库系统:

  • SQL Server
  • MS Access

让我们看一个例子。

SELECT TOP 2 first_name, last_name
FROM Customers;

这里,SQL 命令选择了前 2 行的 first_namelast_name

我们也可以将 *TOP 一起使用来选择所有列。

SELECT TOP 2 *
FROM Customers;

这里,SQL 命令选择了表中的前 2 行。

如何在 SQL 中使用 TOP 子句

SQL FETCH FIRST 子句

FETCH FIRST n ROWS ONLY 子句用于 Oracle 数据库系统。

让我们看一个例子。

SELECT *
FROM Customers
FETCH FIRST 2 ROWS ONLY;

这里,SQL 命令选择了表中的前 2 行。

更多关于 SELECT TOP 的使用方式

TOP 中的 PERCENT

PERCENT 关键字用于选择总行数的前 n 百分比。例如,

SELECT TOP 40 PERCENT first_name, last_name
FROM Customers;

假设我们的表包含 5 行。在这种情况下,上述 SQL 命令选择了总行数的 40%(2 行)。

TOP 中的 WITH TIES

WITH TIES 子句用于在最后一行有相似值的情况下选择更多行。让我们看一个例子:

SELECT TOP 3 WITH TIES first_name, country
FROM Customers
ORDER BY country DESC;

这里,SQL 命令,

  • 首先按 country 降序排序行。
  • 然后,选择前 3 行。
  • 假设最后一行的 country 字段为 USA。如果其后的行也在 country 字段中包含 USA,那么这些行也会被选择。

顺便说一句,ORDER BY 关键字必须始终与 WITH TIES 子句一起使用。