!!!求助:两个表的比较和操作 求高手帮忙 小生感激涕零

assicc 2007-09-18 03:50:00
我有两表
A表
xx yy zz
---------------
11 22 33
66 77 88
……

B表
xx yy zz ww aa
---------------------------
43 75 39 44 55
99 44 22 99 00
……

要求结果输出表
xx yy zz ww aa
---------------------------
11 22 33 44 55
66 77 88 99 00
……

也就是把B表中存在而A表不存在的“列”插入A表 并且“不改变”原A表中的数据
这种操作需要经常操作 把B表中存在而A表不存在的列插入A表
值得注意的是B表比A表多几列是“不固定”的 也许多1列 也有可能多很多列
求高手帮忙 小生感激涕零
...全文
260 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
assicc 2007-10-15
  • 打赏
  • 举报
回复
没有人来帮忙啊
assicc 2007-09-30
  • 打赏
  • 举报
回复
无人问津。。。
assicc 2007-09-30
  • 打赏
  • 举报
回复
请高手务必帮个忙哦!谢谢
ojuju10 2007-09-28
  • 打赏
  • 举报
回复
还是没有明白你的意思,唉!
assicc 2007-09-28
  • 打赏
  • 举报
回复
问题不解决,此帖不结,大家都伸出援助之手 帮帮忙
bluebullet 2007-09-28
  • 打赏
  • 举报
回复
意思是明白了,不会,帮你顶吧
cxmcxm 2007-09-19
  • 打赏
  • 举报
回复
再加上处理#tmp的语句
if object_id(tempdb..#tmp) is not null drop table #tmp
select * into #tmp from b
update #tmp
set xx=a.xx,yy=a.yy,zz=a.zz
from #tmp,A where #tmp.id=A.id
select * from #tmp
drop table #tmp
assicc 2007-09-19
  • 打赏
  • 举报
回复
谢谢 cxmcxm(小陈) 兄 这个思路很好 我以前没有想到

但是这个方法仍然不可取
因为我的数据量很庞大(作为测试我只把A表设计成了3列,实际上A表有300多列呢) 而且保存起来的数据会越来越多,所以不可能这样去实现.

况且这样执行起来无疑是把查询执行了2遍
这样执行时间会很长
刚才我试了一下
用在批处理中 完全执行下来要15分钟 这样很恐怖啊
我想把时间控制在5分钟左右
cxmcxm 2007-09-18
  • 打赏
  • 举报
回复
只是简单的替换,
select * into #tmp from b
update #tmp
set xx=a.xx,yy=a.yy,zz=a.zz
from #tmp,A where #tmp.id=A.id
select * from #tmp
assicc 2007-09-18
  • 打赏
  • 举报
回复
最重要的是注意“A表和B表相差几列不能固定”
要求能动态实现把B表中存在而A表不存在的“列”插入A表 并且“不改变”原A表中的数据

哪个大虾可以帮我

谢谢大家
帮忙顶顶
让此问题早日解决
谢谢大家了
giftzheng 2007-09-18
  • 打赏
  • 举报
回复
A表
id xx yy zz
---------------
1 11 22 33
2 66 77 88
……

B表
ID xx yy zz ww aa
---------------------------
1 43 75 39 44 55
2 99 44 22 99 00
……

要求结果输出表
ID xx yy zz ww aa
---------------------------
1 11 22 33 44 55
2 66 77 88 99 00
……


select a.*,b.zz,b.ww,b.aa
from a join b on a.id=b.id
assicc 2007-09-18
  • 打赏
  • 举报
回复
giftzheng(爱多VCD,我们一直在努力)
没有对应关系 因为A表和B表行数相同 只要添加进去就可以了
如果确实需要关系
可以在A表B表中填入一ID列 问题依旧

A表
id xx yy zz
---------------
1 11 22 33
2 66 77 88
……

B表
ID xx yy zz ww aa
---------------------------
1 43 75 39 44 55
2 99 44 22 99 00
……

要求结果输出表
ID xx yy zz ww aa
---------------------------
1 11 22 33 44 55
2 66 77 88 99 00
……

也就是把B表中存在而A表不存在的“列”插入A表 并且“不改变”原A表中的数据
这种操作需要经常操作 把B表中存在而A表不存在的列插入A表
注意“A表和B表相差几列不能固定”
求高手帮忙 小生感激涕零
assicc 2007-09-18
  • 打赏
  • 举报
回复
B表中的数据是行转列而来的 现在B表和A表的行数是相同的 但是列数不相同 我要用B表中的数据更新A表 但是不能改变原来A表的数据
因为A表和B表相差几列不能固定 所以azhhuoiu的方法也不可取 谢谢
azhhuoiu 2007-09-18
  • 打赏
  • 举报
回复
你是要更改原来的表,还是只要查询结果??
我觉得你可以预留字段?比如15个字段,b表字段少的话,你就空其他列
update b set b.xx=a.xx,set b.yy=a.yy,b.zz=a.zz from b,a
现在的b表其实就是你要的结果了,如果你要更改a表,还不如直接重建a表
giftzheng 2007-09-18
  • 打赏
  • 举报
回复
值得注意的是
B表列数据插入A表
对应关系是什么样
第一行数据对第一行
第二行数据对第二行
还是其它

34,576

社区成员

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

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