设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2856|回复: 4
打印 上一主题 下一主题

sql server 如何用联合查询更新到一张数据表

[复制链接]
跳转到指定楼层
1#
发表于 2020-3-25 13:28:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如:有四张表,表1:id,a,b,c,d;表2:id,e,f,g;表3:id,h,i,j,k ;表四:sid,id,a,b,c,d,e,f ,g,h,i,j,k-----如何通过联合查询数据更新至一张表
        select l. id,l.a,l.c,l.d,0 as e,0 as f, 0 as g, 0 as h, 0 as i, 0 as k from 表1 l
       union all
         select m.id,0 as a, 0 as b, 0 as c, m.e,m.f,m.g,0 as h,0 as i,0 as j, 0 as k from 表2 m
       union all
         select  n.id, 0 as a, 0 as b, 0 as c, 0 as e, 0 as f, 0 as g ,n.h,n.i,n.j,n.k from 表3 n
请高手指定如何将查询数据更新至表4,必免重复更新数据!谢谢!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅

点击这里给我发消息

2#
发表于 2020-3-25 15:34:27 | 只看该作者
到底是新增还是修改。如果是新增数据,直接逐个追加到表4,不会重复的。若果是要修改表内容,需要对应ID啊
3#
发表于 2020-3-25 22:24:18 | 只看该作者
第一种方式:
insert into 表4
select …… from 表1
union
select …… from 表2
union
…………

select …… from 表n
如果觉得这样仍然有重复数据,可以考虑嵌套一下,加上distinct或者group by
例如:
insert into 表4
select distinct id,字段1,字段2……from (
select …… from 表1
union
select …… from 表2
union
…………

select …… from 表n) a


-------------------------------这里是分割线-------------------------------

第二种方式:
步骤1:插入不重复的基准数据。
insert into 表4(sid)
select id from 表1
union
select id from 表2
union
……
select id from 表n

步骤2:更新必要的字段
update 表4 set 表4.字段1=表1.字段1
from 表1 where 表4.sid=表1.id

update 表4 set 表4.字段2=表1.字段2
from 表1 where 表4.sid=表1.id

……
update 表4 set 表4.字段n=表1.字段n
from 表1 where 表4.sid=表1.id

直至把表4需要更新的字段更新完毕

步骤3:对表2,表3……表n重复步骤2,直至把所有表的字段更新完毕。

4#
 楼主| 发表于 2020-3-26 12:28:19 | 只看该作者
roych 发表于 2020-3-25 22:24
第一种方式:
insert into 表4
select …… from 表1

roych:谢谢你的回复,一如既往的强大;我想通过SQL作业完做到时时更新,完本打算插入数据不重复,又是多表更新至一张表单里,用merge into
                          using(select.....),
                  WHEN MATCHED THEN   
            update  
          set.....
          when not matched then
             insert   ,结果是主键不能重复报错,
采用 inser into,需要设定条件不让它重复更新
5#
发表于 2020-3-30 16:19:47 | 只看该作者
把存储过程写好,定期执行就好了。事实上,你应该评估实际业务情况是否需要实时,还是说可以T+1。
一直挂着作业,每过一分钟执行一次可不是什么好事。
最后一条,如果你的数据源太多的话,不妨考虑下重新修改下表结构。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-12-23 23:32 , Processed in 0.095403 second(s), 29 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表