日期:2014-05-16  浏览次数:20785 次

如何通过sql语句更新一个没有连接条件的表
要求如下:通过sql语句更新一个没有连接条件的表。

测试数据:

有两个表test1、test2,别分别如下:

SQL code
create table TEST1
(
  CODE VARCHAR2(20),
  NO   VARCHAR2(20)
)


SQL code
create table TEST2
(
  CODE VARCHAR2(20),
  NO   VARCHAR2(20)
)


测试数据如下:

SQL code
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字段???

------解决方案--------------------
SQL code
--增加辅助序号列
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;