这样的update语句应该怎么写,求救!!!!

stephenyk 2005-09-01 12:23:54
有两个一样的表A,B,我要把B中的一条记录完全更新A中的一条记录,应该怎么写啊?
...全文
186 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
stephenyk 2005-09-01
  • 打赏
  • 举报
回复
我的意思如下:
表A中有a、b、c三个字段,表B的结构跟A完全一样
A:
a b c
-------------------
1 2 2

B:
a b c
-------------------
1 3 3

我现在要更新A中a = 1的记录,而更新的内容跟B中a = 1的记录完全相同
stephenyk 2005-09-01
  • 打赏
  • 举报
回复
我曾经用过这种方法,但是因为我现在A表里面有一个字段作了外键,因此不能删除,所以我想问一下有没有跟“insert A select * from A where .....”类似的语句阿
filebat 2005-09-01
  • 打赏
  • 举报
回复
update ... set ... from ...

不知道你的表结构和具体需求是怎么样的.
一般会说,会有一个连接关键字.

你按上面的改一下就可以了.

或者说,你把问题再说具体一点.

肯定有大把人帮你解决.
vivianfdlpw 2005-09-01
  • 打赏
  • 举报
回复
--删除A中的纪录
delete from A where ......

--插入B中记录
insert A
select * from A where .....
zhangyang555 2005-09-01
  • 打赏
  • 举报
回复
使用动态语句是对的.

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
poormsteven 2005-09-01
  • 打赏
  • 举报
回复
错了
正确的是

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表中的列名
poormsteven 2005-09-01
  • 打赏
  • 举报
回复
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
撸大湿 2005-09-01
  • 打赏
  • 举报
回复
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
poormsteven 2005-09-01
  • 打赏
  • 举报
回复
可以考虑动态语句
zzxiaoma 2005-09-01
  • 打赏
  • 举报
回复
update b set b.a=a.a,b.b=a.b,b.c=a.c from a,b where a.a=b.a
zouqiang122 2005-09-01
  • 打赏
  • 举报
回复
Ding
生活真美好 2005-09-01
  • 打赏
  • 举报
回复
值必须是单一的。
stephenyk 2005-09-01
  • 打赏
  • 举报
回复
那可不可以用

update a set a.*=b.*
from a
inner join b
on a.a=b.a

summerICEREDTEA 2005-09-01
  • 打赏
  • 举报
回复
--写错了 FT
update a set a.b=b.b,a.c=b.c
from a
inner join b
on a.a=b.a
stephenyk 2005-09-01
  • 打赏
  • 举报
回复
"update a set a.b=b.b,a.c=b.c where a.a=b.a"这句我也知道,因为我的表中有四十多列,所以不想一个一个去赋值,不知道有没有简单的方法
summerICEREDTEA 2005-09-01
  • 打赏
  • 举报
回复
update a set a.b=b.b,a.c=b.c where a.a=b.a

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧