各データベースのページングアルゴリズム


1.SQL SERVERは、逆順から正順の方法です
select top 3 * from (select top 9 * from mvc_book order by bid) as s order by s.bid desc [ 6,5,4 ]
select * from (select top 3 * from (select top 6 * from mvc_book order by bid) as s order by s.bid desc) as s1 order by s1.bid  [ 4,5,6 ]
select top 6 * from mvc_book where (bid not in (select top 2 bid from mvc_book))[ 3,4,5,6,7,8 ]

2.ORACLEはMinusとRownumで実現(MinusからUnion連合Intersectを減算して同じレコードセットを返す)
select * from t_service_vnet_send where rownum <= 15 MINUS select * from t_service_vnet_send where rownum <= 10;

または
select * from (select rownum no,id,age,name from loaddata where rownum <= 3 ) where no >= 2;

3.DB2
select * from (select ROW_NUMBER() over() as a, org.* from org) as temp where a>=n1 and a<=n2

4.MYSQL
select * from tablename limit m,n;

From:
http://www.blogjava.net/cheneyfree/archive/2009/01/30/252759.html