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 的查询,而不是通过子句
添加额外的顺序
我们有一个代码可以对数据进行排序和分页,并将数据呈现给 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 的查询,而不是通过子句
添加额外的顺序