update ... set ... from ...不知道你的表结构和具体需求是怎么样的. 一般会说,会有一个连接关键字.你按上面的改一下就可以了.或者说,你把问题再说具体一点.肯定有大把人帮你解决.
我曾经用过这种方法,但是因为我现在A表里面有一个字段作了外键,因此不能删除,所以我想问一下有没有跟“insert A select * from A where .....”类似的语句阿
我的意思如下: 表A中有a、b、c三个字段,表B的结构跟A完全一样 A: a b c ------------------- 1 2 2B: a b c ------------------- 1 3 3我现在要更新A中a = 1的记录,而更新的内容跟B中a = 1的记录完全相同
update a set a.b=b.b,a.c=b.c where a.a=b.a
"update a set a.b=b.b,a.c=b.c where a.a=b.a"这句我也知道,因为我的表中有四十多列,所以不想一个一个去赋值,不知道有没有简单的方法
--写错了 FT update a set a.b=b.b,a.c=b.c from a inner join b on a.a=b.a
那可不可以用 “ update a set a.*=b.* from a inner join b on a.a=b.a”
update b set b.a=a.a,b.b=a.b,b.c=a.c from a,b where a.a=b.a
select * into #A from A inner join B on A.a=B.a delete from B where B.a in (select a from #A) insert into A select * from #A Drop table #A
declare @sql nvarchar(1024)set @sql=''select @sql=@sql+'a.'+syscolumns.name+'=b.'+syscolumns.name+',' from syscolumns inner join sysobjects on syscolumns.id=sysobjects.id where sysobjects.name='AconxNews'set @sql=substring(@sql,1,len(@sql)-1) set @sql='update a set '+@sql+' from a inner join b on a.a=b.a'exec @sql
错了 正确的是declare @sql nvarchar(1024)set @sql=''select @sql=@sql+'a.'+syscolumns.name+'=b.'+syscolumns.name+',' from syscolumns inner join sysobjects on syscolumns.id=sysobjects.id where sysobjects.name='a'set @sql=substring(@sql,1,len(@sql)-1) set @sql='update a set '+@sql+' from a inner join b on a.a=b.a'exec @sql这个语句条件就是a表中的列名必须完全等于b表中的列名
使用动态语句是对的.declare @sql nvarchar(1024) set @sql='' select @sql=@sql+'a.'+syscolumns.name+'=b.'+syscolumns.name+',' from syscolumns inner join sysobjects on syscolumns.id=sysobjects.id where sysobjects.name='a'set @sql=substring(@sql,1,len(@sql)-1) set @sql='update a set '+@sql+' from a inner join b on a.a=b.a'exec @sql
一般会说,会有一个连接关键字.你按上面的改一下就可以了.或者说,你把问题再说具体一点.肯定有大把人帮你解决.
表A中有a、b、c三个字段,表B的结构跟A完全一样
A:
a b c
-------------------
1 2 2B:
a b c
-------------------
1 3 3我现在要更新A中a = 1的记录,而更新的内容跟B中a = 1的记录完全相同
update a set a.b=b.b,a.c=b.c
from a
inner join b
on a.a=b.a
“
update a set a.*=b.*
from a
inner join b
on a.a=b.a”
delete from B where B.a in (select a from #A)
insert into A select * from #A
Drop table #A
syscolumns inner join sysobjects
on syscolumns.id=sysobjects.id
where sysobjects.name='AconxNews'set @sql=substring(@sql,1,len(@sql)-1)
set @sql='update a set '+@sql+' from a inner join b on a.a=b.a'exec @sql
正确的是declare @sql nvarchar(1024)set @sql=''select @sql=@sql+'a.'+syscolumns.name+'=b.'+syscolumns.name+',' from
syscolumns inner join sysobjects
on syscolumns.id=sysobjects.id
where sysobjects.name='a'set @sql=substring(@sql,1,len(@sql)-1)
set @sql='update a set '+@sql+' from a inner join b on a.a=b.a'exec @sql这个语句条件就是a表中的列名必须完全等于b表中的列名
set @sql=''
select @sql=@sql+'a.'+syscolumns.name+'=b.'+syscolumns.name+',' from
syscolumns inner join sysobjects
on syscolumns.id=sysobjects.id
where sysobjects.name='a'set @sql=substring(@sql,1,len(@sql)-1)
set @sql='update a set '+@sql+' from a inner join b on a.a=b.a'exec @sql