如何用rowid更新某一序号字段

sslljj 2003-12-01 02:27:41
有表A,字段sn_no

现在用 select rowid,sn_no from a where KEY_FIELD='VALUE' order by sn_no
语句可以得出如下纪录:
rowid sn_no
------ ------
1 2
2 5
3 8

请问大家,如何用这1、2、3,更新那2、5、8。多谢多谢。
...全文
144 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sslljj 2003-12-01
  • 打赏
  • 举报
回复
刚才又试了一下,发现错了。我本来想用rownum的,错写成rowid,此方案行不通(因为rownum是在order by 之前算好的),我用笨办法吧。谢谢良子,结贴。
podded 2003-12-01
  • 打赏
  • 举报
回复
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 8

SQL> 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 AAAFlkAAJAAAABdAAH

SQL> select * from a;

SN_NO KEY_F
------------------ -----
1 test
AAAFlkAAJAAAABdAAB value
3 test
4 test
AAAFlkAAJAAAABdAAE value
6 test
7 test
AAAFlkAAJAAAABdAAH value

已选择8行。
sslljj 2003-12-01
  • 打赏
  • 举报
回复
不是这个样子的。
rowid是Oracle选出数据后给每行算出的序号,不是表里的一个字段。

我是想用得到的rowid赋给sn_no字段,不只这三条的。谢谢。
shanyuliang 2003-12-01
  • 打赏
  • 举报
回复
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。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧