RT...

解决方案 »

  1.   

    取了怎么比较大小?
    如:
    AAAIWfAAJAACSdcAAA
    AAAIWfAAJAACSdcAAG
    AAAIWfAAJAACSdcAAH
    AAAIWfAAJAACSdcAAK
    AAAIWfAAJAACSdcAAL这个是顺序排列,但毕竟没有1,2,3,4,5那么直观
      

  2.   

    所以如果能通过比较大小再通过for循环排列的number类型的值给一个变量,再把变量给一个确定的表中的某列的话,不就成功了?
      

  3.   

    按rowid排序?然后再储存起来?
      

  4.   

    是这样的
    恩按rowid排序,然后把rowid的结果,按number类型(或别的数字类型)依rowid与行的已然存在的对映关系,存到每行的某列(如列名:sign等)中去
      

  5.   

    rowid就是唯一标志记录物理位置的一个id,在oracle 8版本以前,rowid由file# block# row#组成,占用6个bytes的空间,10 bit 的 file# ,22bit 的 block# ,16 bit 的 row#。从oracle 8开始rowid变成了extend rowid,由data_object_id# rfile# block# row#组成,占用10个bytes的空间, 32bit的 data_object_id#,10 bit 的 rfile#,22bit 的 block#,16 bit 的 row#.由于rowid的组成从file#变成了rfile#,所以数据文件数的限制也从整个库不能超过1023个变成了每个表空间不能超过1023个数据文件。 
      

  6.   

    ORACLE ROWID
      

  7.   

    按rowid排序取rownum的值就可以了,不过数据量很大的话,更新会很慢
      

  8.   


    那能不能帮我看看我的这个帖子出的问题http://topic.csdn.net/u/20090520/13/11b236f9-1ad6-43dd-969a-0ca6ec764e9c.html
    已经很接近我现在这篇帖子了,有具体例子哈哈,老兄,拜托看看
      

  9.   

    看到那个帖子了,你试试在select后面加上order by rowid 看看出来的是不是你想要的结果
      

  10.   

    update tbl set "Id_tbl"=(select rownum no from tbl order by rowid) where no>11;ORA-00907: missing right parenthesis报错了
      

  11.   

    update tbl set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b) where a.主键=b.主键; 
      

  12.   

    那个括号错了
    update tbl set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b where a.主键=b.主键); 
      

  13.   

    没主键随便取了个列名(workid)权且当你这句的“主键”:update tbl set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b where a.workid=b.workid)ORA-00904: "B"."WORKID": invalid identifier换了个写法(可能写错了),也不对:
    update tbl set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b where tbl a.workid=tbl b.workid);ORA-00920: invalid relational operator
    不知道我那篇帖子最后两楼你看了没我只想将就我那句(update tbl set "Id_tbl"=(select rownum no from tbl) where no>11;)看看有没有小改的情况下,能达到目的:“直接把第10行(不含)以上的行改了就行”,而不必要把已经有Id_tbl的行(如第1行到第10行)重新写一遍Id_tbl的值
    [Quote=引用 22 楼 superhsj 的回复:]
      

  14.   

    你在试试这个
    update tbl a set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b where a.workid=b.workid and b.no>10);
      

  15.   

    还是报ORA-00904: "B"."WORKID": invalid identifier的错
      

  16.   

    再试
    update tbl a set "Id_tbl"=(select no from (select rownum no,tbl.* from tbl order by rowid) b where a.workid=b.workid and b.no>10);
      

  17.   

    update tbl a set "Id_tbl"=(select no from (select rownum no,tbl.* from tbl order by rowid) b where a.workid=b.workid and b.no>10)ORA-01427: single-row subquery returns more than one row
      

  18.   

    这回就对了,你把a.workid=b.workid替换成唯一能确定一条记录的条件就可以了
      

  19.   

    也就是对现在这个表(tbl)设置“哪个列名成为真正的主键”么?我现在有数据了,还能设置么?
      

  20.   

    不一定非是主键,也不一定非要一个条件,只要通过一个或几个字段能唯一确定一条记录就可以了
    比如 a.col1=b.co1 and a.col2=b.col2
      

  21.   

    好的,这问题被泡到这份上应该 “浮力>重力” 了,,嘿嘿!O(∩_∩)O~
      

  22.   

    rownum 是和记录排序有关吧?
      

  23.   

    我记得9i里面rowid应该是直接可以Select出来的啊
      

  24.   

    在oracle 8 基础上增加了data_object_id,当然是有以前所有数据库中,数据文件是1023,到现在每个表最多由1023个文件组成。 不过到目前为止,我还没见过这么大数据的表