SQL SELECT LIMIT、TOP、FETCH FIRST
1.LIMIT
关键字的功能:LIMIT
关键字用于指定在 SQL 查询结果中返回的记录数量。例如,SELECT first_name, age FROM Customers LIMIT 2;
将只返回前2条记录。
2.结合 OFFSET
使用 LIMIT
:OFFSET
关键字与 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 行。
注意:并非所有数据库管理系统(DBMS)都支持 LIMIT
子句。不同的 DBMS 使用不同的关键字来选择固定数量的行。例如,
关键字 | 数据库系统 |
---|---|
TOP | SQL Server, MS Access |
LIMIT | MySQL, PostgreSQL, SQLite |
FETCH FIRST | Oracle |
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
子句一起使用。