📅  最后修改于: 2023-12-03 14:44:56.092000             🧑  作者: Mango
在 Oracle 的 SQL 语句中,我们可以使用 ROWNUM
和 FETCH FIRST
关键字来实现类似于 SQL Server 中的 SELECT TOP
功能。
在 Oracle 中,每个查询结果的行都会被分配一个唯一的行号,这个行号就是 ROWNUM
。通过使用 ROWNUM
,我们可以选择前 N 行记录。
例如,我们想选择前 10 条记录:
SELECT *
FROM table_name
WHERE ROWNUM <= 10;
这个查询将返回 table_name
表中的前 10 行记录。
需要注意的是,在使用 ROWNUM
进行筛选时,我们需要先执行一个子查询,再在子查询的结果中进行 ROWNUM
的筛选。
例如,我们想选择年龄最大的前 3 个人:
SELECT *
FROM (
SELECT *
FROM table_name
ORDER BY age DESC
)
WHERE ROWNUM <= 3;
我们首先执行了一个子查询,将 table_name
表按照年龄从大到小排序,然后在子查询的结果中筛选前 3 行记录。
在 Oracle 12c 及以上版本中,我们可以使用 FETCH FIRST
关键字来选择前 N 行记录(还可以用于排序)。
SELECT *
FROM table_name
ORDER BY age DESC
FETCH FIRST 3 ROWS ONLY;
这个查询将返回 table_name
表中按照年龄从大到小排序的前 3 行记录。
使用 FETCH FIRST
比使用 ROWNUM
更为简洁,同时也更为方便。它允许我们在查询语句中指定多个排序条件,而不需要执行子查询。不过,需要注意的是,它只在 Oracle 12c 及以上版本中可用。
Oracle 中可以通过使用 ROWNUM
或 FETCH FIRST
关键字来实现类似于 SQL Server 中的 SELECT TOP
功能。使用 FETCH FIRST
更为方便,但需要使用 Oracle 12c 及以上版本。如果使用 ROWNUM
,则需要先执行一个子查询,再在子查询结果中进行 ROWNUM
的筛选。