假设我的表中有10000条记录,如何每次只读出表的100条记录,分100次读完啊?
第一次可以用 select * from tab1 where rownum<101;
第二次怎么读啊?怎么读出101-200这100条记录?就是说,从上次的读完的最后一条记录再往下读100条?

解决方案 »

  1.   

    int n=0;CString sql;
    sql.Format("select * from tab1 where rownum>n*100 
               and rownum<(%d+1)*100+1",n);
    执行完sql后n加一即可。
      

  2.   

    rownum 是 怎么搞出来的???是 index ??
      

  3.   

    从表中一次只读100条纪录SELECT TOP 100 *FROM 你的表名
      

  4.   

    to fupinger,waitingforyou: rownum是SQL的关键字,不是表的字段。
    select * from tab1 where rownum<101;无论什么表,都是查出前100条记录。
    TO ptxq:没有select top 100 * from这个语句吧?我试了不行啊。
      

  5.   

    SELECT TOP 100 PERCENT * FROM 表名。
    少写了一个关键字 percent 抱歉.
      

  6.   

    看你的数据库类型了,从你的SQL语句来看,使Oracle吧(猜的)?如果你的表里有ID(一般的设计应该都有这个字段,没有的话加一个?)的话,用ID控制就可以了——每一次把最小或最大的ID记录下来,至于写SQL语句就不用我们费心了吧?呵呵。
      

  7.   

    select * from tab1 where rownum<101; 在ACCESS中不行
      

  8.   

    呵呵,搞定了。还是数据库的Oracle版的人对这比较熟悉。select  *  from  (select  rownum  rm,...  from  tab1 where  rownum  <200)  where  rm  >=101;
    也可以:
    select * from   tab1 where  rownum  <200
    minus
    select * from   tab1 where  rownum  <100;
    谢谢大家回答。