select rownum, username from users
ORACLE可以,别的不知道行不行!

解决方案 »

  1.   

    在MS SQL Server中不行,mySQL也不支持。
    标准的SQL语法中有办法得到类似rownum的语法吗?
      

  2.   

    和具体的数据库有关,不同的SQL实现方案可能有所不同
      

  3.   

    interbase / firebird 是有 DBKEY, 相信和 rowid用途相若.
      

  4.   

    interbase / firebird 是有 DBKEY, 相信和 rowid用途相若.
      

  5.   

    to:jabmoon(刺月) 
      有没有一种通用的方案呢?
      我是学习数据分页的时候遇到这个问题的。如果已知检索的结果是海量数
    据,而其实用户不可能完全阅读,所以使用分页。我看到有些分页方案是先
    取得所有数据,然后定位到某一页,再滚动纪录,显示随后的一部分纪录。 这种做法的效率不高。mysql有这样的语法
      SELECT * FROM USERS LIMIT 100,200
    来取得区间部分的数据集,这非常好用,可是其他数据库不支持。
    比如MS SQL SERVER中需要写一个过程,ORECAL中有ROWNUM,都能实现
    取出指定区间部分的数据集。
      我想,如果能够用标准SQL语句,取得每一行的序号,问题就用一种通用的
    方法可以解决了。所以有此一问。
      

  6.   

    Oracle数据库中有一个唯一物理序号!!!
    如果仅仅想获得列表的序号:Table.RecordNo不就是吗!!!!
      

  7.   

    是 Table1.Recno 可以取的记录的行号
      

  8.   

    Table1.Recno可以取得记录号。但是,我的意图是直接选出特定区间的记录放入数据结果集容器(TTable或者TQuery)中,而不是完全取出数据,放入数据集容器之后才分页。也就是要显示那一部分(页)数据,就取出那一部分(页)数据。也就是要从SQL语句中加以处理。比如mysql的LIMIT语法
      SELECT * FROM USERS LIMIT 100,200
      //取出表中第100行到第200行的数据。    lastlove(小豆芽)和ie4888(业余选手)指出Oracle数据库中有一个唯一物理序号,可以通过rownum取得。那么可以这样写:
        SELECT * FROM USERS WHERE (rownum>=100 and rownum<=200)    Java论坛上有人谈到在MS SQL Server中有rec_id类似于Oracle的rownum那么,应该也可以这样解决了。    谢谢 Rewiah(乘长风) 的观点。如果操作海量数据库,我想有必要这样考虑一下效率问题。
      

  9.   

    在MS SQL Server中可用下限制:
    Select @drows = COUNT(*)/3 FROM sales
    SET ROWCOUNT @drows
    或用:Select top 10 from sales
      

  10.   

    // 不知你可否理解??封装企业物件unit Framework;interfaceuses
      Classes;const
      NotAssigned = 0;type
      TObjectID = Integer;  TPDObject = class
      private
        FID: TObjectID;
      published
        property ID: TObjectID read FID;
      end;function StrToID(Value: string); TObjectID;
    function IDToStr(Value: TObjectID): string;implementation....end.
      

  11.   

    上面写错了一句
    published
      property ID: TObject read FID default NotAssigned;// a Sample of TPDObject implementing;unit ProblemDomain;interfaceuses
      Framework;type
      TMyAppObject = class(TPDObject)  end;  TYourDBTableObject = class(TMyAppObject)
      private
        FName: string;
        ....
      published
        property Name: string read FName;
      end;
    implementation...end.
      

  12.   

    to:initora(自信中) 
      我不知道你的意思。我看是很一般的类的定义、继承。:-)
      

  13.   

    FID 应该可以比较好的实现序列号吧!TPDObject = class
    private
      FDMObject: TDMObject;   // persistent data
    public
      procedure LoadObject(FID: TObjectID);
    end;// implement LoadObject;procedure TObject.LoadObject(FID: TObjectID);
    begin
      if FID <> NotAssigned then
        DMObject.Load(FID)
    end;
      

  14.   

    TDMObject 用于与资料库的交互工作。
      

  15.   

    to: initora(自信中)
       不懂。呵呵,需要向你学习。
      

  16.   

    我想说的是,这样子建构的系统可以方便而容易地实现你的需求;相反地,SQL语句的书写我们完全可以不需要考虑,**不用考虑能否写出来,它应该是一个必然的结果吧**。
    我是菜鸟啊!三人行,必有我师,我来学习的。
      

  17.   

    to:initora(自信中)
      有道理呵。不过真的需要向你学习学习。我的email是[email protected]
      希望能和你互相探讨和学习。
      

  18.   

    在sql server里面也应该有方法,向你学习
      

  19.   

    用ADO连接吧,它是支持数据分页的:
    如设置PageSize := 50;
    再设置AbsolutePage := 5;
    就表示每页记录数为50,当前输出页为第五页!
      

  20.   

    select row=recno,username form users