我想同步多个表。我想从一个表中复制一行并将其更新到另一个表,但是我不想指定列名。这是因为我不想为每个表分别对sql查询进行硬编码。
我尝试了几种变体,它可以与insert一起使用,但是我无法通过Update找到解决方案
insert into t2 select * from t1 where sno=2;
在此代码中,我不需要将列名称传递给Insert,它会自动知道列列表。我想通过Update实现相同的功能,我不想在SET部分中传递列列表。
答案 0 :(得分:0)
您始终需要使用SET并一一分配列。但是,您可以使用子查询来使用另一个表更新源表
update
Table1 as T1
inner join (
select *
from Table2
where ...
) as t2 on t1.Id = t2.Id
set T1.something = t2.something
答案 1 :(得分:0)
好吧,如果列相同,则可以执行以下操作:
const viewRouteResolver = { data: AppResolver };
{
path: ‘’,
resolve: viewRouteResolver,
canActivate: [LoggedInGuard],
children: [
{
path: ‘’,
redirectTo: ‘/mainView’,
pathMatch: ‘full’,
resolver: viewRouteResolver
},
{
path: ‘menu1’,
loadChildren: ‘app/menu/menu1.module#Menu1Module’,
resolve: viewRouteResolver
}
]
}
我不明白为什么会用delete from t2
where exists (select 1 from t1 where t1.id = t2.id);
insert into t2
select *
from t1;
来替换数据(尽管我仍然会列出所有列)。
如果列不相同,则需要列出更改的列。