Oracle 服务器中的 Jqgrid 分页问题

Issue in Jqgrid pagination in Oracle server

我们有一个代码可以对数据进行排序和分页,并将数据呈现给 Jqgrid。该代码在连接到 SQL 服务器时工作正常。那就是按预期对每个页面 return 的不同数据进行分页。但是在某个时间点连接到 oracle 服务器时,会呈现重复数据。 Oracle 和 SQL 服务器都有相同的数据。 Jqgrid 页面中的参数和页面数在服务器端按预期工作。那是在分页的起点和块大小被正确地传输到服务器端。在对数据库中类型为 varchar 但也包含数字的列进行排序后,会观察到重复值。在观察到分页问题时,在使用状态列对重复数据进行排序后,数据库状态列包含值 3 和 A。从某种意义上说,重复数据,即第 2 页上的数据将与第 3 页上的数据相同。我们将不胜感激。提前致谢... 查询一:-

select *   from ( select row_.*, rownum rownum_  from ( Select x,y,z,status FROM tablename c WHERE status IN('in condition seperated with status') ORDER BY status asc ) row_  where rownum <= 30 )    where  rownum_ > 20; 

查询二:-

select *   from ( select row_.*, rownum rownum_ from ( Select x,y,z,status FROM tablename c WHERE status IN('in condition seperated with status') ORDER BY status asc ) row_  where rownum <= 20 )    where rownum_ > 10;

这里查询 1 和 2 总是return相同的结果。

如果 ORDER BY 子句列中的两个或多个值相同,您必须始终提供另一个辅助列进行排名。否则,data return 只能如我们预期的那样获取正确结果的概率。获得正确答案的可能性与掷骰子相同。辅助列必须是唯一的才能获得准确的结果。虽然您可以假设他们会根据输入的顺序对自己进行排序

select *   from( select row_.*, rownum rownum_ from( Select x,y,z,status FROM tablename c  WHERE status IN('in condition seperated with status') ORDER BY status,x asc ) row_  where rownum <= 30 )    where rownum_ > 20;

希望x是唯一值。 DBMS_RANDOM.VALUE 也可以用于 if 是一个特定于 oracle 的查询,而不是通过子句

添加额外的顺序