标题: sql server 如何用联合查询更新到一张数据表 [打印本页] 作者: 天涯沦落20131 时间: 2020-3-25 13:28 标题: sql server 如何用联合查询更新到一张数据表 如:有四张表,表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,必免重复更新数据!谢谢!作者: admin 时间: 2020-3-25 15:34
到底是新增还是修改。如果是新增数据,直接逐个追加到表4,不会重复的。若果是要修改表内容,需要对应ID啊作者: roych 时间: 2020-3-25 22:24
第一种方式:
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
…………
roych:谢谢你的回复,一如既往的强大;我想通过SQL作业完做到时时更新,完本打算插入数据不重复,又是多表更新至一张表单里,用merge into
using(select.....),
WHEN MATCHED THEN
update
set.....
when not matched then
insert ,结果是主键不能重复报错,
采用 inser into,需要设定条件不让它重复更新作者: roych 时间: 2020-3-30 16:19
把存储过程写好,定期执行就好了。事实上,你应该评估实际业务情况是否需要实时,还是说可以T+1。
一直挂着作业,每过一分钟执行一次可不是什么好事。
最后一条,如果你的数据源太多的话,不妨考虑下重新修改下表结构。