update a set sn_no=2 where rowid=1;
update a set sn_no=5 where rowid=2;
update a set sn_no=8 where rowid=3;不过你的rowid很怪,我还没见过这样的rowid。

解决方案 »

  1.   

    不是这个样子的。
    rowid是Oracle选出数据后给每行算出的序号,不是表里的一个字段。我是想用得到的rowid赋给sn_no字段,不只这三条的。谢谢。
      

  2.   

    update a set sn_no=rowid where key_field='value';不过,你的sn_no字段的长度至少要有18位,这是rowid的长度。
    如:
    SQL> select rowid,sn_no from a where key_field='value';ROWID              SN_NO
    ------------------ ------------------
    AAAFlkAAJAAAABdAAB 2
    AAAFlkAAJAAAABdAAE 5
    AAAFlkAAJAAAABdAAH 8SQL> update a set sn_no=rowid where key_field='value';已更新3行。SQL> select rowid,sn_no from a where key_field='value';ROWID              SN_NO
    ------------------ ------------------
    AAAFlkAAJAAAABdAAB AAAFlkAAJAAAABdAAB
    AAAFlkAAJAAAABdAAE AAAFlkAAJAAAABdAAE
    AAAFlkAAJAAAABdAAH AAAFlkAAJAAAABdAAHSQL> select * from a;SN_NO              KEY_F
    ------------------ -----
    1                  test
    AAAFlkAAJAAAABdAAB value
    3                  test
    4                  test
    AAAFlkAAJAAAABdAAE value
    6                  test
    7                  test
    AAAFlkAAJAAAABdAAH value已选择8行。
      

  3.   

    刚才又试了一下,发现错了。我本来想用rownum的,错写成rowid,此方案行不通(因为rownum是在order by 之前算好的),我用笨办法吧。谢谢良子,结贴。