如何将B表中的所有字段全部更新到A表中,A表字段包含了B表中,但B表中字段的个数是不确定的

zj2050 2008-07-27 02:57:17
如何将B表中的所有字段全部更新到A表中,A表字段包含了B表中,但B表中字段的个数是不确定的
...全文
111 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
华芸智森 2008-07-28
  • 打赏
  • 举报
回复

declare @var_sql varchar(8000)
declare @var_stable varchar(128)
declare @var_otable varchar(128)
declare @var_fldlist varchar(4000)

set @var_stable='lx1' --目标表名
set @var_otable='lx2' --源表名

set @var_fldlist=''
select @var_fldlist=@var_fldlist + t1.[name] + ',' from (
select b.[name] from sysobjects as a inner join syscolumns as b on a.[id]=b.[id]
where a.xtype='u' and a.[name]=@var_stable
) as t1 inner join
(
select b.[name] from sysobjects as a inner join syscolumns as b on a.[id]=b.[id]
where a.xtype='u' and a.[name]=@var_otable
) as t2 on t1.[name]=t2.[name]

set @var_fldlist=left(@var_fldlist,len(@var_fldlist)-1)
set @var_sql='insert into ' + @var_stable + '(' + @var_fldlist + ') select ' + @var_fldlist + ' from ' + @var_otable
print @var_sql
linux_ch 2008-07-28
  • 打赏
  • 举报
回复
這兩個表的關係沒有確定,不同的關係是很複雜的處理的,效率也不一樣
zj2050 2008-07-28
  • 打赏
  • 举报
回复
不行的,没有效率,也不可知

[Quote=引用 7 楼 mugua604 的回复:]
datatable 用FOREACH 循环写SQL语句!
[/Quote]
mugua604 2008-07-28
  • 打赏
  • 举报
回复
datatable 用FOREACH 循环写SQL语句!
M1CR0S0FT 2008-07-28
  • 打赏
  • 举报
回复
顶~
zj2050 2008-07-27
  • 打赏
  • 举报
回复
是,别见笑

[Quote=引用 4 楼 hery2002 的回复:]
引用 3 楼 zj2050 的回复:
老大,不太懂,能说说吗?
我的B表是用C#从客户端返回的 Dataset,
A表是现场查询的

不懂现场查询,太专业了......
LZ在做批量更新么?
这个帖子是不是也是问的这个问题?
[/Quote]
hery2002 2008-07-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zj2050 的回复:]
老大,不太懂,能说说吗?
我的B表是用C#从客户端返回的 Dataset,
A表是现场查询的
[/Quote]
不懂现场查询,太专业了......
LZ在做批量更新么?
这个帖子是不是也是问的这个问题?
zj2050 2008-07-27
  • 打赏
  • 举报
回复
老大,不太懂,能说说吗?

我的B表是用C#从客户端返回的 Dataset,

A表是现场查询的




[Quote=引用 2 楼 Haiwer 的回复:]
假设A,B表用ID字段连接


SQL codedeclare @sql varchar(8000)
select @sql=isnull(@sql+',','')+a.name+'=b.'+a.name
from syscolumns a,syscolumns b
where a.id=object_id('A')
and b.id=object_id('B')
and a.name=b.name
and a.xusertype=b.xusertype
and a.name<>'ID'

exec('update A set '+@sql+' from B where A.ID=B.ID')
[/Quote]
昵称被占用了 2008-07-27
  • 打赏
  • 举报
回复
假设A,B表用ID字段连接

declare @sql varchar(8000)
select @sql=isnull(@sql+',','')+a.name+'=b.'+a.name
from syscolumns a,syscolumns b
where a.id=object_id('A')
and b.id=object_id('B')
and a.name=b.name
and a.xusertype=b.xusertype
and a.name<>'ID'

exec('update A set '+@sql+' from B where A.ID=B.ID')
SQLnewlearner 2008-07-27
  • 打赏
  • 举报
回复
哦不懂。

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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