原文:http://blog.sina.com.cn/s/blog_4c925dca0100jvpd.html
对于web上实现上翻页功能,阿堂前面在新浪博客(http://blog.sina.com.cn/heyitang)和阿堂的qq空间上都有详细介绍(我已经写过三遍關于各种情况下的博文),我这里就不再重复介绍了,有兴趣的朋友可以去我的博客上参考相关文章!
今天,阿堂所要说的,对于目前web上使用的三大主流数据库,oracle,sql server,mysql中通过sql语句来达到定制显示我们需要的记录数,如我要显示业务sql中的,第11行到20行的记录,如果我们能在sql语句中,做到了这一点,在web上实现分页,就是一件很轻松的事情了,所以,阿堂下面主要就是对这三种主流数据库的对应的sql的写法进行总结了!如果,朋友们认真体会,阿堂写的这遍文章的话,完全就可以自己来写个通用的翻页封装类了!(朋友们如果是想更详细的了解sql语句,如何在web上实现分页更详细的过程,请参考阿堂上面写的几遍文章即可,如有任何问题,欢迎给阿堂留言,我会及时进行解答的!)
第一种情况 Oralce
如
select * from(
select my_table.*, rownum as my_rownum from
(
(业务sql语句) my_table
where rownum<=20
) where my_rownum>=11
)
说明:这里主要利用了oracle的rownum的功能
测试代码
select * from
(
select my_table.*, rownum as my_rownum from
(
select * from (
select lot.sku,lot.storerkey storer,to_char(lotattr.lottable05,'YYYY-MM-DD hh24:mi:ss') receipt_date,
sku.descr,trunc(sysdate-lotattr.lottable05) as again,
sum(lot.qty-lot.qtyallocated) as qty,
case lotattr.lottable09 when 'O' then '合格'
when 'I' then '待检'
when 'H' then '不合格'
end as status,
getunitofpackwh9(pack.packdescr) as Unit
from wh9.lot lot,
wh9.Lotattribute lotattr,
wh9.sku sku,
wh9.pack pack
where lot.lot = lotattr.lot
AND lot.sku = sku.sku
AND lot.storerkey = sku.storerkey
AND lotattr.lottable01 = pack.packkey
AND lot.qty-lot.qtyallocated>0
group by lot.sku,lot.storerkey,to_char(lotattr.lottable05,'YYYY-MM-DD hh24:mi:ss'),sku.descr,
trunc(sysdate-lotattr.lottable05),
case lotattr.lottable09 when 'O' then '合格'
when 'I' then '待检'
when 'H' then '不合格'
end,getunitofpackwh9(pack.packdescr)
) where again>1 order by receipt_date desc,status desc,again desc
) my_table
where rownum<=20
)
where my_rownum >=11
测试效果图
第二种情况 sql server
如
//查询第11行到第20行记录
select top 10 * from [表名] where [主键] not in (select top 10 [主键] from [表名] order by
[排序字段及排序方法]) order by [排序字段及排序方法]
说明:这里是利用了主键,如果是多表关联时,上面的 主键选能唯一标识该记录行的字段即可
测试代码
select top 10 * from web_t_booking
where order_no not in (select top 10 order_no from web_t_booking order by order_no desc)
order by order_no desc
测试效果图
第三种情况 mysql
我们可以利用MySQL中Select支持的一个子句——LIMIT——来完成这项功能。
LIMIT可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下:
Select * FROM MYTABLE
order BY AFIELD
LIMIT offset, recnum
其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。
例:
select * from mytable
order by afield
limit 10, 10
即意为从第11条记录开始的10条记录。
测试代码
select * from address
order by id
limit 10, 10
测试效果图
分享到:
相关推荐
解决oracle sqldeveloper无法连接mysql、SQLServer问题,sqlDeveloper是ORACLE数据库开发工具,自带的是无法连接MS SQL Server以及mysql的,想连接的话需要第三方工具。 使用方法: 解压出来后将2个jar放入jlib...
SQL SERVER连接oracle数据库几种方法 查询oracle数据库中的表 在master数据库中查看已经存在的链接服务器 要在企业管理器内指定登录帐号
sqlserver mysql oracle 三种数据库的分页查询比较
Oracle数据库sql转换mysql数据库工具,用需要的同学可以下载
数据库转换工具,可实现oracle,mysql,sqlserver,sybase,db2相互转换
通过ORACLE通用连接访问SQLServer数据库的方法
oracle sqlserver mysql区别概述
Oracle Sql语句转换成Mysql Sql语句java 源码,非常简单,只要给定源oracle sql语句地址,和生成目标文件地址运行即可。
利用 Microsoft SQL Server Migration Assistant for Oracle.exe(微软数据库迁移工具) ,将oracle数据库迁移数据到SQL server详解。
分别用于连接数据库SQL server、MYSQL、oracle的jar包 分三个文件夹,每个数据库一个文件夹
sqlserver、oracle、mysql等几乎所有数据库的odbc驱动jar包,都包含在内。
mysql数据库/sqlserver数据库/oracle数据库/sqlserver数据库(JTDS)驱动总结 例如mysql数据库: driverClass=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/BookDB?useUnicode=true&characterEncoding=...
用java实现从SQLSERVER到ORACLE的数据库迁移
一键生成Oracle、Sqlserver、Mysql 数据库表结构说明文档,文档输出类型支持word、PDF、html。原创作品绿色环保无污染
mysql、oracle、sqlserver三种数据库驱动包
java数据库用到的三种数据库驱动包,Oracle,SQLServer,Mysql,使用方法,myeclipse-构建路径-用户库-添加用户库-添加到系统库-完成,j2ee时直接将对应包拷贝到WEB-INF文件夹下的lib文件夹
这是本人用过的数据库的jar包集合,都可以用JDBC连接数据库,包含mysql,oracle,sqlserver,Access等数据库
数据库转换工具 mysql sqlserver
SQL Server数据库转MySQL数据库 MySQL-to-Access MySQL数据库转Access数据库 MySQL-to-Excel MySQL数据库转Excel数据库 MySQL-to-MSSQL MySQL数据库转MSSQL数据库 MySQL数据库转SQL Server数据库 MySQL-to-Oracle ...
oracle到sqlserver 存储过程语法转换,希望对大家有帮助啊! 最近刚把oracle的数据库移植到sqlserver!