我正在使用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')
为了澄清,我试图从两个不同的数据库查询。两个数据库应该具有相同的架构,但可能尚未完全初始化,因此可能不包含正在查询的表。我试图在一个查询中完成此操作。
最佳答案
查询中使用的名称必须在SQL优化器尝试计划查询执行时存在。如果他们不这样做,你会得到有关不存在的相关表或列的粗鲁信息。没有任何标准的方法来解决这个问题。而且也不太可能有非标准的方法来解决这个问题。
至少,不可能完全接受查询文本。如果您已准备好进行系统目录查询(通过本地系统目录表或通过或多或少标准化的信息架构),那么您可以决定如何在运行时构建查询,从而获得成功的最大机会。这是一个不寻常的要求;很少有程序能够容忍这种偏离它们所连接的数据库的预期规范的情况。
关于sql - 从两个数据库中的两个数据库中都不存在表的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9474340/