table表中,有几百条数据,id为主键,从1开始自增长1 。但是数据中间有断层,比如 1 ,2 ,4, 5,7,9,55,56。。等现在想做一个循环。把这几百条数据取出前10条,然后赋值给1个Datatable(数组也行)然后循环,再取出第10-20条的数据,再赋值给这个Datatable。然后循环,再取出第20-30条的数据,再赋值给这个Datatable。也就是:-----------------------------------------------------------------------------------------点击按钮之后:int i=总记录/10 + 1; //这是一共有几个10条。也就是分页中的一共有几页。
for(int j=1;j<=i;j++) //我想应该是,不确定。也就是循环这么多次。
{
     Datatable dt=xxxx;//这里,把第i次取出的10条给赋值给Datatable。
     //这里是我需要对dt进行的一些操作。
}大概意思就是这样。谢谢!

解决方案 »

  1.   

    Datatable dt=xxxx;//这里,把第i次取出的10条给赋值给Datatable。写错了。应该是第 j 次取出的值赋值给 dt
      

  2.   

    sql server top 10
    my sql limit i,i+10
      

  3.   

    #2Access  不过语法跟SQL差不了多少。我也知道是top 10 ,可是第一次可以这样top 10 第二次可以这样: select top 10 * from table where id not in(select top 10 id from table)可是第三次呢?第四次呢。。
      

  4.   

    取第三页
    select top 10 * from tb
    where id>(select max(id) from (select top (3-1)*10 * from tb order by id) a) order by id
      

  5.   

    4#取第N页:
    select top 10 * from tb
    where id>(select max(id) from (select top (N-1)*10 * from tb order by id) a) order by id
    是这样吗?
      

  6.   

    --sql 2000
    select * from 
    (
      select * , px = (select count(1) from tb where id < t.id) + 1 from tb t
    ) m
    where px between 10 and 20  --(10到20,如果是20到30,则改为 px between 20 and 30)--sql 2005
    select * from 
    (
      select * , px = row_number() over(order by px) from tb
    ) m
    where px between 10 and 20  --(10到20,如果是20到30,则改为 px between 20 and 30)
      

  7.   

    原来那里不能加代码了。取第N页,是这样吗:select top 10 * from tb
    where id>(select max(id) from (select top (N-1)*10 * from tb order by id) a) order by id
      

  8.   

    6# 我是ACCESS。 SQL2000的那个应该可以吧。我去试试。谢谢先!
      

  9.   


    create proc wsp
    @pagesize int, --页大小
    @pageindex int --第几页
    as
         declare @sql varchar(1000)
         set @sql='select top '+ltrim(@pagesize)+' * from 表名 where id not in(select
         top '+ltrim((@pageindex-1)*@pagesize)+' id from 表名 order by id)
         order by id'
         exec(@sql)
    go
      

  10.   

    9# 哥哥我错了。应该声明,是ACCESS