如何在一个SQL语句中比较来自不同数据库的两个值

时间:2011-03-09 12:53:31

标签: c# sql sql-server

我有想法从两个不同的数据库调用两个值并在一个语句中进行比较?可能吗? 我正在使用c#和MS-SQL

4 个答案:

答案 0 :(得分:6)

对于MSSQL,您可以在表前添加数据库名称。您通常可以使用4个名称空间

[服务器名称]。[数据库名称]。[所有者]。[table_name]

因此,如果要比较一个语句中的两个值,则只需要通过将数据库名称放在表名前面来连接各个表。

如果数据库位于不同的服务器上,那么您将需要创建一个链接服务器,该服务器将运行您的SQL,以便它知道其他sql服务器。您可以使用sp_addlinkedserver

之类的内容在Management studio中或通过SQL添加链接服务器

答案 1 :(得分:5)

您可以跨数据库连接来比较这些值:

SELECT
   db1.Value as value1,
   db2.Value as value2
FROM
   [database1].dbo.MyTable1 as db1
   INNER JOIN
   [database2].dbo.MyTable as db2
    ON   
    /* insert join clasue */

答案 2 :(得分:0)

根据您的设置,这里有一些可能性。如果您的数据库是不同的SQL Server安装,那么您将首先查看sp_linkedserver。一旦您能够使用相同登录查看两个数据库,您就可以执行以下查询,其中db1和db2是数据库,dbo是所有者,tab1和tab2是相应的表。

SELECT a.col1 
FROM db1.dbo.tab1 a, db2.dbo.tab2 b
WHERE a.col1 = b.col2

答案 3 :(得分:0)

如果您恰好缺少创建链接服务器的SQL Server权限,您可以创建与每个服务器的连接,并且您的客户端可以使用Microsoft JET库连接到服务器,然后您可以执行异构连接客户端