Sql 如何在ORACLE中一次更新所有列而不指定列名
如何在不指定列名的情况下一次更新所有列 假设我有表Sql 如何在ORACLE中一次更新所有列而不指定列名,sql,oracle,Sql,Oracle,如何在不指定列名的情况下一次更新所有列 假设我有表A ID NAME AGE 21 MATT 45 表B ID NAME AGE 21 SCOTT 24 我所期望的 update table A set A.columns=B.columns 基本上,我正在尝试同步两个表。据我所知,如果不指定列名,就无法更新表列值。您的目的是使表A具有与表B相同的值,然后可以从表A中删除所有行,并将数据复制到表A delete from A; insert into A select
A
ID NAME AGE
21 MATT 45
表B
ID NAME AGE
21 SCOTT 24
我所期望的
update table A
set A.columns=B.columns
基本上,我正在尝试同步两个表。据我所知,如果不指定列名,就无法更新表列值。您的目的是使表A具有与表B相同的值,然后可以从表A中删除所有行,并将数据复制到表A
delete from A;
insert into A select * from B;
commit;
如果您有一些原因只使用update
语句,并且有很多列,那么您可以使用字典生成update
语句
select 'A.'||column_name||'=B.'||column_name||','
from all_tab_columns
where owner = 'your schema name'
and table_name = 'A';
执行查询并复制结果并进行编辑
update A
set <paste the result of previous query here>
;
更新A
设置
;
您可以在PLSQL中执行此操作:
for src in ( select * from B ) loop
update A set ROW = src where A.id = src.id;
end loop;
或用于插入
for src in ( select * from B ) loop
insert into A values src;
end loop;
如果不指定列名,则无法执行
更新
(为什么要这样做?)。如果我们假设列是按相同的顺序定义的,并且具有相同的数据类型,那么您可以删除A中的所有数据,然后将B中的所有数据插入A中。但是,我们会问,为什么您要尝试在同一数据库(可能在同一架构中)中使用相同的数据创建两个表。