从两个数据库中查询表中可能不存在某个表的查询

时间:2012-02-28 00:00:14

标签: sql database sql-server-2008-r2

我正在使用SQL Server 2008。

有没有办法从多个数据库中进行选择,查询的列可能存在也可能不存在?

我目前的代码如下:

SELECT Value FROM [database1].[dbo].[table_name] WHERE Name='job_name' AND EXISTS (SELECT 1 FROM [database1].INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='table_name')
UNION
SELECT Value FROM [database2].[dbo].[table_name] WHERE Name='job_name' AND EXISTS (SELECT 1 FROM [database2].INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME='table_name')

为了澄清,我试图从两个不同的数据库进行查询。两个数据库应该具有相同的模式,但可能尚未完全初始化,因此可能不包含要查询的表。我试图在一个查询中执行此操作。

1 个答案:

答案 0 :(得分:2)

查询中使用的名称必须在SQL优化程序尝试计划查询执行时存在。如果他们不这样做,您将收到有关相关表或列不存在的粗鲁消息。没有任何标准的方法。并且极不可能存在非标准的方法。

至少,没有办法解决查询文本的问题。如果您准备执行系统目录查询(通过本机系统目录表或通过或多或少标准化的信息模式),那么您可以决定如何在运行时构建查询,以便它具有成功的最大机会。这是一个不寻常的要求;很少有程序可以容忍这些与它们所连接的数据库的预期规范的偏差。