oracle查询中的rownum问题

时间:2013-03-23 18:00:35

标签: sql database oracle rownum

我试图运行此查询,但它返回零行。任何线索为什么?

Select distinct a.id
from  table1 a, table b
where  ( a.id= b.id or a.id = b.secondid ) and rownum < 200;

但如果我在没有ROWNUM子句的情况下运行上述查询,它会找到记录:

Select distinct a.id
from  table1 a, table b
where  ( a.id= b.id or a.id = b.secondid );

我很困惑为什么第一个查询无效。

3 个答案:

答案 0 :(得分:3)

在 Oracle确定要返回的行之后,您需要应用ROWNUM 。唯一可靠的方法是:

SELECT * FROM (
  Select distinct a.id
  from  table1 a, table b
  where  ( a.id= b.id or a.id = b.secondid )
) WHERE ROWNUM < 200;

答案 1 :(得分:0)

请使用下面的线程。很好的解释。 https://community.oracle.com/thread/210143  这是两个可行的解决方案。

  1. 将row_number函数用于8i和9i:
    ROW_NUMBER()超过ROW_NUMBER(按ASC排序)。
  2. 重用Rownum伪列(这似乎更好) 选择 * 来自( SELECT t。*,ROWNUM AS rn 来自( 选择 * 来自mytable 订购 分页者ID )吨 ) 在1和3之间

答案 2 :(得分:-1)

将“和rownum&lt; 200”更改为“WHERE rownum&lt; 200”