Oracle分页:选择distinct,没有明确的顺序

时间:2015-11-03 12:10:52

标签: oracle pagination

我正在使用oracle 12c并尝试使用分页编写查询。在一个简单的例子中,可以使用

SELECT * FROM T OFFSET a FETCH NEXT b ROWS ONLY;

SELECT * FROM (
        SELECT t.*,ROWNUM AS rn FROM (
                SELECT t.* FROM test_table t
                 WHERE col = ?
                 ORDER BY order_col) t
         WHERE ROWNUM <= b
) WHERE rn >= a;

但就我而言,我有两个问题:

  1. 我没有order_column,因为我的查询是针对没有明确定义的表格动态生成的,所以我不知道他们是否有一些我可以订购的列。所以,这里的问题是我可以简单地在这种情况下使用ROWID来ORDER BY ROWID吗?
  2. 大多数内部选择​​或原始(非分页)查询包含DISTINCT,因此,ORDER BY ROWID导致异常。 选择不同的列FROM T ORDER BY ROWID - &gt; &#34;不是选定的表达式&#34;
  3. 所以,我的问题是如何在没有预定义order_column的情况下进行分页以及如何使用&#34; order by rowid&#34;用&#34; distinct&#34;。

0 个答案:

没有答案