最近在网上看到了sql分页这个名词, SQL分页都什么情况下会用到啊 有什么好处哈。
看到了 如下语句网上看到得SQL DEMOSELECT TOP 页大小 *
 FROM table1
 WHERE id NOT IN
           (
           SELECT TOP 页大小*(页数-1) id FROM table1 ORDER BY id
           )
 ORDER BY id
我改写成的SQL--我的TABLE1中有8681条数据
create table table1
(bh char(10) null,
 mc char(100) null)
SELECT TOP 100 bh,mc
 FROM table1
 WHERE bh NOT IN
           (
           SELECT TOP 100*(20-1) bh FROM table1 ORDER BY id
           )
 ORDER BY bh第一:执行的时候提示 消息 102,级别 15,状态 1,第 4 行
'(' 附近有语法错误。
我把  SELECT TOP 100*(20-1) bh FROM table1 ORDER BY id  修改成 
      SELECT TOP 100*19 bh FROM table1 ORDER BY id
执行提示 消息 102,级别 15,状态 1,第 4 行
'19' 附近有语法错误。改成  SELECT TOP 1900 bh FROM table1 ORDER BY id
查处来的内容就是显示了100条记录啊
其他的记录怎么不显示了

解决方案 »

  1.   


    --第1个,还有,你建的表哪有id列
    SELECT TOP 100 bh,mc
     FROM table1
     WHERE bh NOT IN(SELECT TOP (100*(20-1)) bh FROM table1 ORDER BY bh)
     ORDER BY bh
    --第2个
    SELECT TOP 100 bh,mc
     FROM table1
     WHERE bh NOT IN(SELECT TOP (100*19) bh FROM table1 ORDER BY bh)
     ORDER BY bh
      

  2.   


    --分页是应用程序页面中用到的,一般这样写
    --存储过程中传入参数:
    /*
    @table nvarchar(20)--表名称
    @pageIndex int--当前页面
    @pageSize int--页面大小
    @whereCase nvarchar(100)--查询条件
    @orderByCase nvarchar(100)--排序条件
    @totalRows int output--总共多少记录
    */
    select * from (
    select row_number() over(order by bh) rn,* from table1) t
    where rn between 100*(20-1)+1 and 100*20
      

  3.   

    那个是例子里的ID 没有改
    SQL分页都什么情况下会用到啊 有什么好处哈。
      

  4.   

    前台程序中一般人都会用到分页,此时就可能直接在sql中分页,然后在程序中调用一般产生json格式的也有totalCount 分页后的内容呀
      

  5.   

    SQL分页主要用于控制大数据量表在前台(报表,表格,列表框之类)的分页显示。
    这样做不仅能够提高查询效率,而且还能是前台看起来比较简洁。
      

  6.   

    sql分页主要是为了前台显示或者报表打印需求,好处主要是减轻服务器读取压力和减少网络流量,然后就是提高效率
      

  7.   

    是啊 那在SQL中 如何看第二页的内容呢? 第二页不能包含第一页的内容
      

  8.   

    浏览网页是经常遇到分页的,如果所有的数据都在一页显示,那要用户等待多久啊。
    分页就是便于用户的体验。个人喜欢的分页方法:--利用id大于多少和select top 分页
    SELECT TOP 页大小 *
    FROM TestTable
    WHERE (ID >
              (SELECT MAX(id)
             FROM (SELECT TOP 页大小*页数 id
                     FROM 表
                     ORDER BY id) AS T))
    ORDER BY ID
      

  9.   


    这句不知在SQL2000里如何写?
      

  10.   

    [code = sql]
    SELECT TOP 100 *
    FROM spbh
    WHERE (spbh >
              (SELECT MAX(spbh)
             FROM (SELECT TOP (100*20) dspid
                     FROM spbh
                     ORDER BY spbh) AS T))
    ORDER BY spbh
    [/code]表spbh中有8000 多条记录  我执行了这一句 只显示了100行记录 其他的记录呢  其他的页面呢,怎么看呢?
      

  11.   

    目前的软件是 D7开发的2层架构的ERP 。可否实现这样的功能。   例如 表中有100行记录 我每页只有20行 这样5页就可以全都显示OK
         当看完第一页最后一行后光标往下移动会自动看到第二页的内容,如此往下看--