1. mysql
mysql的分页比较简单,mysql数据库提供了分页处理的关键字 例如表的名称叫 procuct
select * from product limit 0,10
limit 后面是两个整数,第一个整数是开始的行号,第二个是要取得数据的记录数,比如上面的sql语句会查询出第一条到第十条记录,它是从开始行号的下一条开始取数据的。
2. sql server
sql server 的分页语句稍微复杂点,假如表中有字段 id 用top实现
select top pageSize * from product where id not in (select top (pageNow - 1) * pageSize id from product order by id) order by id
pagesize 就是要取得的记录条数,不过这样的效率不是很高,随着页数的增加速度会慢
sql server 2005 提供了row_number 和over by 函数也可以实现分页
select * from (select row_number() over by(id) rownum t.* from (select * from product) t where rownum <= pageNow * pageSize)where rownum > (pagenow - 1)* pageSize)
效率还是挺高的 比上面用top效率高,不过只用sql 2005 版本以上的数据库管理系统支持。
2.oracle
oracle是用三层嵌套来实现的 ,一直很纳闷,为什么oracel公司不做的简单的,像 mysql 那样多好,不知道为什么要搞这么复杂,oracel为查询的记录提供了一个虚拟列,叫rownum,就是行号
select * from (select rownum, t.* from (select * from product) t where rownum <= pageNow * pageSize)where rownum > (pagenow - 1)* pageSize)
挺复杂的,希望oracel也提供像mysql 那样的分页sql语句