繁体   English   中英

oracle查询中的rownum问题

[英]rownum issue in oracle query

我正在尝试运行此查询,但它返回零行。 有什么线索吗?

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 );

我很困惑为什么第一个查询不起作用。

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;

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

  1. 对8i和9i使用row_number函数:
    ROW_NUMBER()超过(按ASC排序)为ROW_NUMBER。
  2. 重用Rownum伪列(这似乎更好)SELECT * FROM(SELECT t。*,ROWNUM AS rn FROM(SELECT * FROM mytable ORDER BY paginator,id)t)在1和3之间

将“ and rownum <200”更改为“ WHERE rownum <200”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM