📜  oracle 中的 SQL SELECT TOP 等价物 - SQL (1)

📅  最后修改于: 2023-12-03 14:44:56.092000             🧑  作者: Mango

Oracle 中的 SQL SELECT TOP 等价物 - SQL

在 Oracle 的 SQL 语句中,我们可以使用 ROWNUMFETCH FIRST 关键字来实现类似于 SQL Server 中的 SELECT TOP 功能。

使用 ROWNUM 关键字

在 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 行记录。

使用 FETCH FIRST 关键字

在 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 中可以通过使用 ROWNUMFETCH FIRST 关键字来实现类似于 SQL Server 中的 SELECT TOP 功能。使用 FETCH FIRST 更为方便,但需要使用 Oracle 12c 及以上版本。如果使用 ROWNUM,则需要先执行一个子查询,再在子查询结果中进行 ROWNUM 的筛选。