日期:2014-05-18  浏览次数:20361 次

SQL简单的分页问题
SQL code

SELECT TOP 页大小
FROM table1
WHERE id >
    (
    SELECT ISNULL(MAX(id),0)
    FROM
        (
        SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
        )A
    )
ORDER BY id



关于这个SQL分页的模式,应该如何应用。 我在(页数-1)这里不明白,请大侠指点,谢谢。

------解决方案--------------------
2.分页SQL语句 
select * from(select (row_number() OVER (ORDER BY tab.ID Desc)) as rownum,tab.* from 表名 As tab) As t where rownum between 起始位置 And 结束位置 
--可以试试这个语句
------解决方案--------------------
你上面的SQL 是要找出第N页的数据。所以 ID>(子查询)里面为了找出N-1页的最大ID。因为大于此ID的数据为第N页的数据。TOP 页大小是取出 大于N-1页的最大ID后面的一页(第N页)的数据。因为整个语句是按ID从小到大排序的。
------解决方案--------------------
例如按每页20条进行分页

第一页 1-20条
第二页 21-40条
------解决方案--------------------
比如说你现在取第三页的数据,(页数-1)就是先得到第二页的最大ID号. 然后在取大于第二页最大号的数据,就是你要第三页的数据.取多少数据根据页大小决定了.

不知我说明白了没.