>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/

10-11 02:56