使用 ROWNUM Oracle 选择第 n 行



我想知道为什么 1 不起作用,添加 ROWNUM rn 并在外部查询中使用 rn 使其在 2 中工作的逻辑是什么?

我也认为使用 ROWNUM = 某个数字(除了 1(在 oracle 中不起作用,是什么让它在 2 中工作?

1.

SELECT SALARY
FROM (
SELECT SALARY
FROM EMPLOYEE
WHERE ROWNUM <= N
)
WHERE ROWNUM >= N;
RETURN result;

阿拉伯数字。

SELECT SALARY
FROM (
SELECT SALARY, ROWNUM rn
FROM EMPLOYEE
WHERE ROWNUM <= N
)
WHERE rn = N;
RETURN result;

在第二个查询中,您没有使用 rownum,而是使用固定值:rn。其值在子查询中计算。

在第一个查询中,第二个行数与子选择中的行数不同。子选定项中的行数适用于子选定项中的行集。外部查询中的 rownum 适用于外部查询。因此,您的第一个查询被预言机看到,如下所示:

SELECT SALARY
FROM something
WHERE ROWNUM >= N;
RETURN result;

这不会给出记录,因为第一行是 rownum = 1 而不是>= N。第二行现在获取了第一行,它不是>= N。等等。

请参阅此处具有相同问题的另一个问题。

如果需要,rownum 是最后计算的东西。它是在读取行时分配的。因此,第一行始终具有 rownum = 1。:)

最新更新