簡體   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