SQL TOP、LIMIT、FETCH FIRST 或 ROWNUM 子句

SQL SELECT TOP 子句

SELECT TOP 子句用于指定要返回的记录数。

SELECT TOP 子句在包含数千条记录的大型表上非常有用。返回大量记录可能会影响性能。

以下 SQL 语句仅选择 "Customers" 表的前 3 条记录:

实例

仅选择 Customers 表的前 3 条记录:

SELECT TOP 3 * FROM Customers;

亲自试一试

注意:并非所有数据库系统都支持 SELECT TOP 子句。MySQL 支持使用 LIMIT 子句来选择限定数量的记录,而 Oracle 则使用 FETCH FIRST n ROWS ONLYROWNUM

SQL Server / MS Access 语法:

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;

MySQL 语法:

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

Oracle 12+ 语法:

SELECT column_name(s)
FROM table_name
ORDER BY column_name(s)
FETCH FIRST number ROWS ONLY;

演示数据库

以下是实例中使用的 Customers 表的片段:

CustomerID CustomerName ContactName Address City PostalCode Country
1 Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico
4 Around the Horn Thomas Hardy 120 Hanover Sq. London WA1 1DP UK
5 Berglunds snabbköp Christina Berglund Berguvsvägen 8 Luleå S-958 22 Sweden

MySQL - LIMIT 子句

以下 SQL 语句展示了 MySQL 的等效示例:

实例

选择 Customers 表中的前 3 条记录:

SELECT * FROM Customers
LIMIT 3;

亲自试一试

Oracle - FETCH FIRST 子句

以下 SQL 语句展示了 Oracle 的等效示例:

实例

选择 Customers 表中的前 3 条记录:

SELECT * FROM Customers
FETCH FIRST 3 ROWS ONLY;

SQL TOP PERCENT 实例

以下 SQL 语句从 "Customers" 表中选择前 50% 的记录(适用于 SQL Server/MS Access):

实例

SELECT TOP 50 PERCENT * FROM Customers;

亲自试一试

以下 SQL 语句展示了 Oracle 的等效示例:

实例

SELECT * FROM Customers
FETCH FIRST 50 PERCENT ROWS ONLY;

带有 WHERE 的 SELECT TOP

以下 SQL 语句从 "Customers" 表中选择国家为 "Germany" 的前三条记录(适用于 SQL Server/MS Access):

实例

SELECT TOP 3 * FROM Customers
WHERE Country='Germany';

亲自试一试

以下 SQL 语句展示了 MySQL 的等效示例:

实例

SELECT * FROM Customers
WHERE Country='Germany'
LIMIT 3;

亲自试一试

以下 SQL 语句展示了 Oracle 的等效示例:

实例

SELECT * FROM Customers
WHERE Country='Germany'
FETCH FIRST 3 ROWS ONLY;

SELECT TOP 和 ORDER BY

当您想要对结果进行排序并返回排序结果的前 3 条记录时,请添加 ORDER BY 关键字。

对于 SQL Server 和 MS Access:

实例

按 CustomerName 降序对结果进行排序,并返回前 3 条记录:

SELECT TOP 3 * FROM Customers
ORDER BY CustomerName DESC;

亲自试一试

以下 SQL 语句展示了 MySQL 的等效示例:

实例

SELECT * FROM Customers
ORDER BY CustomerName DESC
LIMIT 3;

亲自试一试

以下 SQL 语句展示了 Oracle 的等效示例:

实例

SELECT * FROM Customers
ORDER BY CustomerName DESC
FETCH FIRST 3 ROWS ONLY;