怎样从一个集合里面取出第15到第30个记录,请写SQL.

解决方案 »

  1.   

    用SQL能做到嗎?
    我的思路:
    Open;
    First
    i:= 1;
    for i:=1 to 15 do
      Next;
    while not Eof do
    beign
      prcAddData;
      next:
    end;
      

  2.   

    ORACLE吗?
    SELECT * FROM (SELECT ROWNUM RN ,a.* FROM your_table a)
    WHERE RN BETWEEN 15 AND 30SQL SERVER 中有没有数据集并,交,差的算,如果有可以这样:
    SELECT TOP 30 FROM your_table 
    minus
    SELECT TOP 14 FROM your_table;
      

  3.   

    select top 15 * from (select top 30 * from yourtable order by key_column desc ) as fkey_column:指你排序的字段.
      

  4.   


    Query1.Open;
    Query1.MoveBy(15)
    i:=15; 
    while not Eof do
    beign
      //do something
      //取数据!
      next:
      inc(i);
      if i>30 then
        break;
    end;
      

  5.   


    Query1.Open;
    Query1.MoveBy(15)
    i:=15; 
    while not Query1.Eof do
    beign
      //do something
      //取数据!
      Query1.Next:
      inc(i);
      if i>30 then
        break;
    end;
      

  6.   

    老king的方法有意思!
    值得发扬!
      

  7.   

    to  madyak(下岗的程序员) 
    请问这样取出数据后,该怎样把取出的记录添加到dbgrid里。谢谢
      

  8.   

    用一个TQuery与dbgrid相连。
    query1.sql.close;
    query1.sql.add(select top 15 * from (select top 30 * from yourtable order by key_column desc ) as f);
    query1.open;
      

  9.   

    to lihongyue(yue)
    直接用dbgrid1.datasource.dataset:=query1;不行,我要的是把第15到第30条记录从表格里显示出来,而adoquery1中包含的是所有的记录,虽然madyak(下岗的程序员)的方法能够找到第15到第30条的记录,但是该怎样把它们取出来呢
      

  10.   

    老king说的是对的,但是我想按madyak(下岗的程序员)提供的方法把数据取出来。
      

  11.   

    比如你一个表里必须有一个关键字段为field,表名为table
    Sql语句为:
    SELECT (SELECT COUNT(field) FROM table WHERE a.field >= field) ReNo,
     * FROM table a ORDER BY field用Clientdataset构件,在Filter里写 ReNo>=15 and ReNo<=30 ,同时Filtered为true