Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL分页查询_Sql_Oracle - Fatal编程技术网

SQL分页查询

SQL分页查询,sql,oracle,Sql,Oracle,我有以下SQL结构: SELECT * FROM ( SELECT subquery.* FROM ( SELECT some_columns FROM some_tables WHERE junctions_critereas GROUP BY some_columns UNION SELECT some_columns FROM some_tables WHER

我有以下SQL结构:

SELECT * FROM (
    SELECT subquery.* FROM (
        SELECT some_columns
        FROM some_tables
        WHERE junctions_critereas
        GROUP BY some_columns
      UNION
        SELECT some_columns
        FROM some_tables
        WHERE junctions_critereas
        GROUP BY some_columns) subquery
    GROUP BY some_columns)
WHERE ROWNUM > startRecord AND ROWNUM <= endRecord;
如果排除ROWNUM条件,查询将返回33条记录。 如果我将startRecord=0和endRecord=10放在一起,则查询首先返回10 记录。 如果我将startRecord=0和endRecord=20放入,查询将返回前20条记录。 如果我将startRecord=0和endRecord=40放入,查询将返回所有33条记录。 如果我把startRecord=10和endRecord=20放在一起,查询将不返回任何记录。 如果我把最后的WHERE改为WHERE ROWNUM beeew startRecord和endRecord,我会得到相同的结果


有人知道这里发生了什么?

注意:我假设第一个条件是ROWNUM 甲骨文对此非常清楚:

测试大于正整数的ROWNUM值的条件 你总是错的。例如,此查询不返回任何行:

SELECT * FROM employees
    WHERE ROWNUM > 1;
获取的第一行被指定为ROWNUM 1,并使 条件为假。要提取的第二行现在是第一行,并且 还将ROWNUM指定为1,并使条件为false。所有行 随后无法满足条件,因此不返回任何行


在Oracle 12c中,您可以使用OFFSET/FETCH NEXT。在早期版本中,您可以使用带有偏移量的行数或嵌套查询。

注意:我假设第一个条件实际上是ROWNUM 甲骨文对此非常清楚:

测试大于正整数的ROWNUM值的条件 你总是错的。例如,此查询不返回任何行:

SELECT * FROM employees
    WHERE ROWNUM > 1;
获取的第一行被指定为ROWNUM 1,并使 条件为假。要提取的第二行现在是第一行,并且 还将ROWNUM指定为1,并使条件为false。所有行 随后无法满足条件,因此不返回任何行


在Oracle 12c中,您可以使用OFFSET/FETCH NEXT。在早期版本中,您可以使用带有偏移量的行数查询或嵌套查询。

这里的示例有ROWNUMstartRecord您的示例中有ROWNUMstartRecordI以另一种方式解决了这个问题。。。但我不能发布我的答案…我用另一种方式解决了这个问题。。。但是我不能发布我的答案。。。