黑马程序员技术交流社区
标题:
SQLserver、ORACLE、Mysql中实现分页的机制各是什么
[打印本页]
作者:
王中伟
时间:
2013-7-14 20:13
标题:
SQLserver、ORACLE、Mysql中实现分页的机制各是什么
本帖最后由 杨兴庭 于 2013-7-15 12:09 编辑
SQLserver、ORACLE、Mysql中实现分页的机制各是什么
作者:
iBadboy
时间:
2013-7-14 20:43
网上看到的,希望对你有帮助。
1.MySql中的limit关键字
以模糊查询为例子,limit写到where子句的后面
select * from user where name like '%mm%' limit startrow,readsize;
其中值得推敲的是startrow和readsize也就是开始和读取的记录数
这样查询出来的结果集是从startrow行,读取endsize条记录,实际上查询到的结果集是startrow+1到startrow+readsize的结果,这是操作中我们应该注意的,结果集不包括startrow.
2.Oracle中的rownum关键字
select name,email from (select rownum rn ,name ,email from user where rownum <endrow) t where t.rn>=sartrow
这样我们就可以得到startrow到endrow结果集,注意结果集合不包括endrow当前行记录,如果条件子句中不是>=startrow,那么查询到的结果集是也不包括startrow当前行记录。
Oracle中主要用到rownum这个伪字段,子查询得到的记录集包括了一个rownum字段,由于Oracle中rownum字段都是从1开始递增的,查询到几条记录就递增到几,所以我们应从后向前截取要查询的记录,并将rownum固定为结果集合的一个字段,然后再使用外层查询就可以以结果集的rownum固定住的字段来利用where子句来操纵记录了。
作者:
杨兴庭
时间:
2013-7-14 20:46
SQLserver和Mysql的分页是根据SQl语句来实现分页效果的,ORACLE我没有学过我不清楚,不过肯定也是通过SQl语句来实现分页的
首先要给你的项目提供指定数据库驱动,并写好JDBC连接数据库代码(如果楼主这些都不知道的话我也不知道怎么解释了,太多内容了)
<!--SqlServer分页sql语句-->
SELECT TOP pageSize * FROM t_news
WHERE (id NOT IN
(SELECT TOP ((currentPage-1)*pageSize) id FROM t_news ORDER BY id)
)
ORDER BY ID
复制代码
MySql分页就更简单了,只需要在你的SELECT语句后面加上
limit +(currentPage-1)*pageSize+","+pageSize;
复制代码
当然楼前提要楼主先定义好分页的javaBean,属性分别定义currentPage,pageSize,maxPage,countRows,并提供getter和setter方法
作者:
wll_sx1990
时间:
2013-7-14 22:31
lz,我只学过mysql,所以从mysql的角度给你回答吧,假如说数据库中有张员工表worker,1000个记录,要从199记录起获取100条,可以是select * from worker limit 199,100;可见是通过语句可以实现。但是必须提前为dao准备号需要的pageInfo信息(包含当前起始记录,和每页显示的总记录)。
也可以通过另一种方式实现不过我不会。
作者:
张云杰
时间:
2013-7-15 02:34
分页数字由页面传到后台语句做查询.. 是个动态的
int startnum = 0;
int endnum = 10;
String sql = "select * from table where rownum in ("+startnum+","+endnum+")";// 太久没写了.. 其实还要算上当前页,而且分页的查询有很多种形式
返回一个List
只会一个oracle .. 其他的不会
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2