我正在编写一个查询,以提供大于一个值的下 5 个最小项,即主键(例如 101)。在这种情况下,Id 是 char(19),Id 是聚集索引。
我对查询的尝试如下:
SELECT *
(SELECT *
(SELECT * FROM
PERSON
ORDER BY ID)
WHERE ID >= '101')
WHERE rownum <= 5
我要保证返回的 5 个结果是表中大于 101 的 5 个最大的 id,而不是首先遇到的 5 个最大的结果。因此,我在查询中添加了一个 Order by。我知道 rownum 是在 where 子句之后但在 order by 执行之前分配的。
我的查询/逻辑是否正确?我需要 order by 子句吗?