【发布时间】:2012-04-25 01:43:07
【问题描述】:
我已成功编写代码来动态联合多个数据库中的简单选择语句的结果。我想将数据库名称本身作为一个字段包含在内,以便我可以识别每条记录。修改下面的代码以实现这一目标的最佳方法是什么?
我目前的结果是这样的
字段 2、字段 3、字段 4 b,c,d 2,3,4
我不知道包含 (b,c,d) 的行来自哪个数据库。
我想确保我看到 字段 1、字段 2、字段 3、字段 4 First_DatabaseName, b,c,d Second_DatabaseName,2,3,4
在上面,我可以看到包含 (b,c,d) 的行来自 First_Database
DECLARE @sql varchar(max)
SELECT @sql = ISNULL(@sql + 'union all ',' ') + ' SELECT * FROM ' + name + '.dbo.CombinedProvider '
FROM sys.databases
WHERE name in ('First_DatabaseName', 'Second_DatabaseName')
EXEC (@sql)
【问题讨论】:
-
需要使用 Select * 还是可以显式列出每个数据库的列?
-
我可以从表格中明确列出我想要的每一列。我只包含 * 用于示例目的,不会在生产查询中使用它。
标签: sql database dynamic union