看到那个帖子了,你试试在select后面加上order by rowid 看看出来的是不是你想要的结果
update tbl set "Id_tbl"=(select rownum no from tbl order by rowid) where no>11;ORA-00907: missing right parenthesis报错了
update tbl set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b) where a.主键=b.主键;
那个括号错了 update tbl set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b where a.主键=b.主键);
没主键随便取了个列名(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 的回复:]
你在试试这个 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);
还是报ORA-00904: "B"."WORKID": invalid identifier的错
再试 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);
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
这回就对了,你把a.workid=b.workid替换成唯一能确定一条记录的条件就可以了
也就是对现在这个表(tbl)设置“哪个列名成为真正的主键”么?我现在有数据了,还能设置么?
不一定非是主键,也不一定非要一个条件,只要通过一个或几个字段能唯一确定一条记录就可以了 比如 a.col1=b.co1 and a.col2=b.col2
如:
AAAIWfAAJAACSdcAAA
AAAIWfAAJAACSdcAAG
AAAIWfAAJAACSdcAAH
AAAIWfAAJAACSdcAAK
AAAIWfAAJAACSdcAAL这个是顺序排列,但毕竟没有1,2,3,4,5那么直观
恩按rowid排序,然后把rowid的结果,按number类型(或别的数字类型)依rowid与行的已然存在的对映关系,存到每行的某列(如列名:sign等)中去
那能不能帮我看看我的这个帖子出的问题http://topic.csdn.net/u/20090520/13/11b236f9-1ad6-43dd-969a-0ca6ec764e9c.html
已经很接近我现在这篇帖子了,有具体例子哈哈,老兄,拜托看看
update tbl set "Id_tbl"=(select no from (select rownum no from tbl order by rowid) b where a.主键=b.主键);
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 的回复:]
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);
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);
比如 a.col1=b.co1 and a.col2=b.col2