pagesize: 每页显示记录数 cureentpage:当前页数select * from ( select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC 例子说明:假如数据库表如下:user_table:id:主键,自增 username:字符 password:字符假设有80条记录,每页显示10条记录,id 从1到80 现在按照id升序排列取出第三页的数据应该为:所取得记录的id 应该为 21到30。这时该语句应该为:select * from ( select TOP 10 * FROM ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC原理如下:先按照id从小到大升序取出30条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC)然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1 然后在这些30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。最后在重新排序得到最终我们需要的数据。id在21-30之间。
pagesize: 每页显示记录数 cureentpage:当前页数select * from ( select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC 例子说明:假如数据库表如下:user_table:id:主键,自增 username:字符 password:字符假设有80条记录,每页显示10条记录,id 从1到80 现在按照id升序排列取出第三页的数据应该为:所取得记录的id 应该为 21到30。这时该语句应该为:select * from ( select TOP 10 * FROM ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC原理如下:先按照id从小到大升序取出30条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC)然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1 然后在这些30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。最后在重新排序得到最终我们需要的数据。id在21-30之间。
oracle分页strat:开始记录数 end:结束记录数SELECT * FROM ( SELECT A.*, ROWNUM RN FROM (SELECT * FROM TABLE_NAME) A WHERE ROWNUM <= end ) WHERE RN >= start
cureentpage:当前页数select * from ( select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC
例子说明:假如数据库表如下:user_table:id:主键,自增
username:字符
password:字符假设有80条记录,每页显示10条记录,id 从1到80
现在按照id升序排列取出第三页的数据应该为:所取得记录的id 应该为 21到30。这时该语句应该为:select * from ( select TOP 10 * FROM ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC原理如下:先按照id从小到大升序取出30条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC)然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1 然后在这些30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。最后在重新排序得到最终我们需要的数据。id在21-30之间。
cureentpage:当前页数select * from ( select TOP pagesize * FROM ( SELECT TOP pagesize*cureentpage * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC
例子说明:假如数据库表如下:user_table:id:主键,自增
username:字符
password:字符假设有80条记录,每页显示10条记录,id 从1到80
现在按照id升序排列取出第三页的数据应该为:所取得记录的id 应该为 21到30。这时该语句应该为:select * from ( select TOP 10 * FROM ( SELECT TOP 30 * from user_table ORDER BY id ASC ) as aSysTable ORDER BY id DESC ) as bSysTable ORDER BY id ASC原理如下:先按照id从小到大升序取出30条记录(3*10),也就是:id 在 1-30 之间的记录 (SELECT TOP 30 * from user_table ORDER BY id ASC)然后按照ID降序排列这30条记录,得到记录为id 在:从30到 1 然后在这些30条记录中取出前10条记录:取得的记录为:id 在30-21之间。这就是我们需要的数据,但这时是按照降序排列的,不符合要求。最后在重新排序得到最终我们需要的数据。id在21-30之间。
end:结束记录数SELECT * FROM
(
SELECT A.*, ROWNUM RN
FROM (SELECT * FROM TABLE_NAME) A
WHERE ROWNUM <= end
)
WHERE RN >= start