因为数据库记录有百万以上
所以想每次查询的时候按需要进行查询
而不是一次查出全部
我现在只想到用select top  * from 表 的方式
用jdbc 来对sqlserver 数据库的数据进行分页
但是还不知道怎么实现 我嵌套了三次,order by 排序也倒了三次
结果查出来的数据不准 比如第三页和第四页的数据是一样的现在我给个简单的数据
表里有10 条记录
没页显示3 条
字段有最大值,平均值,最小值
(注意 :没有ID)谁能用select top 帮我解决一下吗?
或者用别的方法也可以
只要不是每点下一页的时候全部查询数据库就可以

解决方案 »

  1.   

    用limit
    Select ID From tablename limit 100,1
      

  2.   

    1用hibernate,分页的语句自动生成
    2sql-server里 select top 3 * from a where id not in
    (select top 6 id from a order by id)
    order by id
    是取按照id排序的7-9条
      

  3.   

    select * from 
    (
    select top 3 * from
    (select top 6 * from a order by id) b
     order by iddesc
    )c order by id
      

  4.   

    如果用 SQL Server 2005 可以使用类似于 Oracle 的窗口函数
      

  5.   

    jdbc的话,先要封装页面的元素,比如当前第几页,一页显示的记录,结果集,结果集的数量等
    然后在sql要看用的是什么数据库,oracle用top,mysql用limit进行分页
    其实最简便的用Hibernate封装好的API
    * setFirstResult(),从0开始
    * setMaxResults,每页显示多少条数据
      

  6.   

    SQLServer 2000 分页功能的实现
      

  7.   

    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 
      

  8.   

    select top rowsPerpage from table where id not in(select top (curPage-1)*rowsPerpage  id  from table)
      

  9.   

    一种字段为自增ID的分页情况(不带条件查询)SELECT TOP 页大小 *
    FROM
     Users
    WHERE
     (ID NOT IN (SELECT TOP (页大小*(页数-1)) ID FROM Users ORDER BY ID DESC))
    ORDER BY
     ID DESC(带条件查询)SELECT TOP 页大小 *
    FROM
     Users
    WHERE
     (ID NOT IN (SELECT TOP (页大小*(页数-1)) ID FROM Users WHERE 条件 ORDER BY ID DESC))
     AND 条件 ORDER BY
     ID DESC不为自增ID的需要另外考虑PS一个自己的分页:SELECT DISTINCT TOP 页大小 tm_time,tm_count,tm_re FROM t_tight_smoke WHERE (tm_time<(SELECT MIN(tm_time) FROM (SELECT DISTINCT TOP 开始查询的记录条数(即上面的算法) tm_time FROM t_tight_smoke ORDER BY tm_time DESC)AS ttightsmoke))ORDER BY tm_time DESC
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zjx2388/archive/2009/02/24/3932249.aspx