使用Oracle和sql server以及通用分页方法进行分页
我想在gridview或html表中实现分页,我将行使ajax添补.我应该怎样编写查询以支持分页?譬喻,假如pagesize为20,当用户单击第3页时,必需在表格中表现41到60之间的行.早先我可以获取全部记录并将它们放入缓存中,但我以为这是错误的要领.由于数据也许很是复杂,数据也许会从其他会话中变动.那么我该怎样实现呢?有没有通用的要领(合用于全部数据库)? 正如其他人所提议的那样,您可以在Oracle中行使rownum.这有点棘手,你必需将查询嵌套两次. 譬喻,要对查询举办分页 select first_name from some_table order by first_name 你必要像这样嵌套它 select first_name from (select rownum as rn,first_name from (select first_name from some_table order by first_name) ) where rn > 100 and rn <= 200 缘故起因是rownum是在where子句之后和order by子句之前确定的.要查察我的意思,您可以查询 select rownum,first_name from some_table order by first_name 你也许会获得 4 Diane 2 Norm 3 Sam 1 Woody 这是由于oracle评估了where子句(在本例中为none),然后分派rownums,然后按first_name对功效举办排序.您必需嵌套查询,以便它行使在排序行后分派的rownum. 第二个嵌套与如安在where前提下处理赏罚rownum有关.根基上,假如您查询“rownum> 100”,那么您将得不到任何功效.这是一个鸡肉和鸡蛋的对象,它不能返回任何行,直到它找到rownum> 100,但由于它没有返回任何行,以是它永久不会增进rownum,因此它永久不管帐为100.呃.第二级嵌套办理了这个题目.请留意,此时必需为rownum列添加别名. 最后,您的order by子句必需使查询具有确定性.譬喻,假如您有John Doe和John Smith,而且您只按名字排序,则两者可以从一次执行查询到下一次执行. 这里有文章http://www.oracle.com/technology/oramag/oracle/06-sep/o56asktom.html此刻,我看到我的帖子有多长,我也许应该刚宣布这些链接…… (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |