oracle,mssql,mysql数据库分页时所用的sql语句
---1.oracle
SELECT * FROM ( SELECT row_.*, rownum rownum_ FROM (...... ) row_ WHERE rownum <= ?) WHERE rownum_ > ?
先按查询条件查询出从0到页未的记录.然后再取出从页开始到页未的记录.(据说是效率最高的:))
---2. sql servler
i:select top [pagesize] * from table where id not in ( select top [pagesize*(currentpage-1)] id from table [查询条件] order by id ) and [查询条件] order by id
先按查询条件排除 pagesize*[pagesize*(currentpage-1)]以前的纪录。&&再按查询条件把他以后的记录 top[pagesize] 出来.
ii:
select top PageSize * from TableName where id > (select max(id) from (select top startRecord-1 id from TableName [查询条件] order by id) as TempTable) [查询条件] order by id
先取得开始该页开始时的最大ID,然后再从最大ID出top[pagesize]
(听说记录组超过10万第二条好过第一条)
---3.mysql
select * from table [查询条件] order by id limit ?,?
这个都不用说了
---1.oracle
SELECT * FROM ( SELECT row_.*, rownum rownum_ FROM (...... ) row_ WHERE rownum <= ?) WHERE rownum_ > ?
先按查询条件查询出从0到页未的记录.然后再取出从页开始到页未的记录.(据说是效率最高的:))
---2. sql servler
i:select top [pagesize] * from table where id not in ( select top [pagesize*(currentpage-1)] id from table [查询条件] order by id ) and [查询条件] order by id
先按查询条件排除 pagesize*[pagesize*(currentpage-1)]以前的纪录。&&再按查询条件把他以后的记录 top[pagesize] 出来.
ii:
select top PageSize * from TableName where id > (select max(id) from (select top startRecord-1 id from TableName [查询条件] order by id) as TempTable) [查询条件] order by id
先取得开始该页开始时的最大ID,然后再从最大ID出top[pagesize]
(听说记录组超过10万第二条好过第一条)
---3.mysql
select * from table [查询条件] order by id limit ?,?
这个都不用说了