表1:
id name desc
------------------
1 a abc
2 b def
3 c adf
Table 2:
name desc
------------
x 123
y 345
如何运行一个SQL更新查询,该查询可以使用表1的ID和表2中的rownum用表2的名称和desc更新表1?可以假设table2中的rownum与表1的id相同。所以我得到的最终结果是
Table 1:
id name desc
------------------
1 x 123
2 y 345
3 c adf
下面是用于表创建和记录插入的脚本
create table table1 (
id number,
name varchar2(10),
desc_ varchar2(10)
);
create table table2 (
name varchar2(10),
desc_ varchar2(10)
);
insert into table1 values(1, 'a', 'abc');
insert into table1 values(2, 'b', 'def');
insert into table1 values(3, 'c', 'ghi');
insert into table2 values( 'x', '123');
insert into table2 values( 'y', '456');
答案 0 :(得分:0)
表中没有“ rownum”之类的东西。 SQL表表示无序集,因此没有排序列就没有排序。
Oracle确实提供rowid
作为内置列标识符。这与rownum
不同,并且不能保证顺序正确。
您可以使用rownum
,但是该值不能保证具有任何特定含义,并且可能在两次运行之间发生变化:
update table1
set (name, desc) = (select name, desc
from (select t2.*, rownum as seqnum
from table2
) t2
where seqnum = table1.id
)
where id <= (select count(*) from table2);