不同数据库,多表,相同字段数据累加

nemo2 2004-09-08 09:00:20
A 数据库
表名:Yhyear
字段 ID Name Age TAcj
1 AAA1 23 90
2 AAA2 35 67.5
3 AAA3 30 68
---------------------------
B 数据库
表名:Yhyear
字段 ID Name Age TBcj
1 BBB1 32 56
2 BBB2 28 77
3 BBB3 53 95
------------------------------------
C 数据库
表名:Yhyear
字段 ID Name Age TCcj
1 CCC1 40 81
2 CCC2 31 62
--------------------------------
现在需要把3个数据库中,3个表中Name,Age字段中的数据累加,

结果是累加到
D数据库,表名为:Yhyear,字段与前三个数据库的表字段相同
结果如下:
字段 Name Age
AAA1 23
AAA2 35
AAA3 30
BBB1 32
BBB2 28
BBB3 53
CCC1 40
CCC2 31

请问各位这样的语句怎么写?
...全文
220 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesterday2000 2004-09-08
  • 打赏
  • 举报
回复
insert into d.dbo.yhyear
select name,age,TAcj from a.dbo.Yhyear
union all
select name,age,TAcj from b.dbo.Yhyear
union all
select name,age,TAcj from c.dbo.Yhyear
nemo2 2004-09-08
  • 打赏
  • 举报
回复
3个数据库在同一台服务器上,三个数据库表名,字段,结构相同

新加了一个数据库,称之为“D”,字段,表名,结构相同

现在需要将前三个数据库中一些表的数据导入到“D”数据库中


A 数据库
表名:Yhyear
字段 ID Name Age TAcj
1 AAA1 23 90
2 AAA2 35 67.5
3 AAA3 30 68
---------------------------
B 数据库
表名:Yhyear
字段 ID Name Age TBcj
1 BBB1 32 56
2 BBB2 28 77
3 BBB3 53 95
------------------------------------
C 数据库
表名:Yhyear
字段 ID Name Age TCcj
1 CCC1 40 81
2 CCC2 31 62

合并后D数据库应该为:表名依旧是:Yhyear

字段 Name Age TCcj
AAA1 23 90
AAA2 35 67.5
AAA3 30 68
BBB1 32 56
BBB2 28 77
BBB3 53 95
CCC1 40 81
CCC2 31 62
yesterday2000 2004-09-08
  • 打赏
  • 举报
回复
如果不在同一服务器上
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','st1'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa','stsoft'
go
--访问不同电脑上的数据库

--如果经常访问或数据量大,建议用链接服务器

--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go

--查询示例
select * from srv_lnk.数据库名.dbo.表名

--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名

go
--处理完成后删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'




--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)


--导入示例
select * into 表 from openrowset('sqloled'
,'sql服务器名';'用户名';'密码'
数据库名.dbo.表名)
zjcxc 2004-09-08
  • 打赏
  • 举报
回复
表中不同的数据库中的话,表名用类似下面的形式:

库名.dbo.表名
yesterday2000 2004-09-08
  • 打赏
  • 举报
回复
如果三个数据库在同一台服务器上:
select name,age from a.dbo.Yhyear
union all
select name,age from b.dbo.Yhyear
union all
select name,age from c.dbo.Yhyear

zjcxc 2004-09-08
  • 打赏
  • 举报
回复
--如果不需要合并,只是关联查询:

select Name,Age from A
union all
select Name,Age from B
union all
select Name,Age from C
zjcxc 2004-09-08
  • 打赏
  • 举报
回复
select Name,Age=sum(age) --如果需要合并的话
from(
select Name,Age from A
union all
select Name,Age from B
union all
select Name,Age from C
)a group by Name

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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