SQL LIMIT 关键字允许我们指定结果集中的记录数量。
示例
SELECT first_name, age
FROM Customers
LIMIT 2;
这里,SQL 命令从表中选择前 2 行。
带 OFFSET 子句的 SQL LIMIT
OFFSET 关键字与 LIMIT 一起使用,以指定从哪一行开始选择数据。例如:
-- LIMIT 2 selects two results
-- OFFSET 3 excludes the first three results
SELECT first_name, last_name
FROM Customers
LIMIT 2 OFFSET 3;
这里,SQL 命令从第四行开始选择 2 行。OFFSET 3 表示排除前 3 行。
注意:并非所有数据库管理系统 (DBMS) 都支持 LIMIT 子句。不同的 DBMS 使用不同的关键字来选择固定数量的行。例如:
| 关键字 | 数据库系统 |
|---|---|
TOP |
SQL Server, MS Access |
LIMIT |
MySQL, PostgreSQL, SQLite |
FETCH FIRST |
Oracle, PostgreSQL (作为 SQL:2008 标准的一部分), DB2 |
SQL TOP 子句
TOP 关键字用于以下数据库系统代替 LIMIT
- SQL Server
- MS Access
让我们看一个例子。
SELECT TOP 2 first_name, last_name
FROM Customers;
这里,SQL 命令选择前 2 行的 first_name 和 last_name。
我们也可以使用 * 和 TOP 来选择所有列。
SELECT TOP 2 *
FROM Customers;
这里,SQL 命令从表中选择前 2 行。
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 子句一起使用。
另请阅读