>SELECT instmax
FROM
(SELECT instmax,
rownum r
FROM
( SELECT * FROM pswlinstmax ORDER BY instmax DESC NULLS LAST
)
)
WHERE r = 2;
INSTMAX
-------
1049
>SELECT instmax
FROM
(SELECT instmax,
rownum
FROM
(SELECT * FROM pswlinstmax ORDER BY instmax DESC
)
)
WHERE rownum=2;
**NO RETURNED ROW**
为什么给出不同的结果?我想对此进行详细说明。
最佳答案
因为第二个时间,rownum不是内部SQL的rownum,而是外部SQL的rownum!
这就是为什么您需要“重命名”它,使其变为“固定”的原因。
否则,rownum = 2过滤器将永远不匹配,因为每一行都是第一行。
关于sql - 为什么在rownum上的两个sql查询都给出不同的结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3581828/