要求如下:通过sql语句更新一个没有连接条件的表。测试数据:有两个表test1、test2,别分别如下:create table TEST1
(
  CODE VARCHAR2(20),
  NO   VARCHAR2(20)
)create table TEST2
(
  CODE VARCHAR2(20),
  NO   VARCHAR2(20)
)测试数据如下:insert into test1 (CODE, NO)
values ('001001', '1');insert into test1 (CODE, NO)
values ('001001', '2');insert into test1 (CODE, NO)
values ('001001', '3');insert into test2 (CODE, NO)
values ('001001', '');insert into test2 (CODE, NO)
values ('001001', '');insert into test2 (CODE, NO)
values ('001001', '');通过ORACLE sql语句 如何将TEST1表的no字段值更新到TEST2表的no字段???

解决方案 »

  1.   

    如何更新?总得有个规则吧,例如通过CODE相等,或者按照插入顺序,ROWNUM等等
      

  2.   

    --增加辅助序号列
    alter table test2 add (rn number);
    --更新序号值
    update test2 set rn=rownum;
    --更新no
    UPDATE test2 a
       SET a.no =
           (SELECT b.no
              FROM (SELECT t.*, rownum rn FROM test1 t) b
             WHERE b.rn = a.rn);
    commit;
    --删除辅助序号列
    alter table test2 drop column rn;