SQL Server中 两个不同的数据库中的两张表如何关联?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server中 两个不同的数据库中的两张表如何关联?相关的知识,希望对你有一定的参考价值。
一台服务器上的两个不同的 SQL Server 数据库?
还是 两台服务器上的, 2个 SQL Server 数据库?
一台服务器上的两个不同的 SQL Server 数据库 很简单
比如你现在是 USE test1 数据库,建立一个表,叫 TestA
然后 USE test2 数据库,建立一个表,叫 TestB
那么要关联,就是 查询的时候,输入全路径
例如
SELECT
检索字段
FROM
test1.dbo.TestA testa,
test2.dbo.TestB testb
WHERE
关联条件
如果是跨服务器的,需要创建 数据库链接。
链接建立好以后,也是和上面的写法差不多。
您能给个例子吗?我不知道您说的关联条件怎么写,还有如何创建SQL2005数据库连接?
1、首先就是创建几个没有任何关系的表,但是注意,你在将要作为外键表的表上必须使用与将要作为主键表的数据类型相同。
2、将能唯一标识的那一行设置为主键,其他表类似。
3、接下来添加关系,如下图。
4、拖动需要添加的关系,直接看图。
5、关联完成,如图。
参考技术A 一台服务器上的两个不同的数据库如test1数据库的a表和test2数据库的b表
可以这样写
选定一个数据库如test1
select 检索字段
from a
inner jion b on b.检索字段=a.检索字段
WHERE
关联条件
两台服务器上的,2个数据库
如果是跨服务器的,需要创建 数据库链接
首先建立连接服务器
USE master
GO
IF EXISTS (SELECT * FROM sysservers WHERE Srvname = 'LinkServer')
BEGIN
EXEC sp_dropserver 'LinkServer', 'droplogins'
END
GO
EXEC sp_addlinkedserver 'LinkServer','','SQLOLEDB','0.0.0.0'
EXEC sp_addlinkedsrvlogin 'LinkServer','false',null,'sa','command'
GO
LinkServer是连接服务器的名字,你自己喜欢取什么就取什么
0.0.0.0,sa,command。是你要连接的另外一台数据库的IP和登录用户密码
查询命令:
select 检索字段
from a
inner jion LinkServer.b on b.检索字段=a.检索字段
WHERE
关联条件 参考技术B 同一台服务器就好说了直接关联查询就可以了,不同的服务器,需要使用OPENDATASOURCE,
至于说的2005的数据库连接跟2000的是一样的,如果是默认实例安装的话,如果新建的实例,需要在连接后面加实例名 参考技术C 在同一个服务器。直接写全名称就可以关联
不同服务器。可以建立连接数据库 然后关联
怎么用SQL比对两表
表1,A字段包含B字段
A B
111 123
111 235
表2,C字段包含D字段
C D
111 123
如何用SQL来比对,两表之间的差异数据?
select * from 表1 minus select * from 表2
SqlServer2005中可以这样:
select * from 表1 except select * from 表2
sqlserver2000中可以这样:
select * from 表1 where not exists (select 1 from 表2 where C=表1.A and D=表1.B)
sqlserver2000里边的这种方式在Oracle和sqlserver2005中也是可行的本回答被提问者采纳 参考技术B 两表字段类型一样~
思路:先把两表的数据合并~,然后把重复的数据剔除掉,剩下的就是两表的差异数据了!
-----实现语句----------------
Select * from (select * from A
Union all
Select * from B) T Group by A,B having count(*)=1 参考技术C --表结构:
CREATE TABLE t1_old (
id int NOT NULL,
log_time DATETIME DEFAULT '') ;
CREATE TABLE t1_new (
id int NOT NULL,
log_time DATETIME DEFAULT '') ;--两表的记录数都为100条。select count(*) from t1_old;select count(*) from t1_new; 参考技术D oracle中:
select * from 表1
minus
select * from 表2
SqlServer2000中:
select * from 表1 where not exists(
select * from 表2 where 表2.C=表1.A and 表2.D=表1.B)
---
以上,希望对你有所帮助。 第5个回答 2019-06-02 sqlserver写法,其他数据库可能略有不同,如果其他数据库请说明
select a.发票号,sum(isnull(b.金额,0)) 汇总表金额,sum(c.总金额) 明细表金额
from
(select 发票号 from 汇总表
union
select 发票号 from 明细表) a
left join 汇总表 b on a.发票号=b.发票号
left join (select 发票号,sum(金额) 总金额 from 明细表 group by 发票号) c on a.发票号=c.发票号
group by a.发票号
以上是关于SQL Server中 两个不同的数据库中的两张表如何关联?的主要内容,如果未能解决你的问题,请参考以下文章
sqlserver 把两个sql查询语句查询出来的两张表合并成一张表