我在数据库通用中有一个名为 databaselist 的表。 此表包含我要选择的同一实例上的所有数据库名称。每个数据库都有一个名为 customermaster 的表。
我想在所有列出的数据库上循环SELECT
查询并返回一个结果。例如,我想获得在通用数据库的 databaselist 表中列出的所有数据库中city = "chicago"
的客户列表。
答案 0 :(得分:0)
如果您使用sql server
,则可以执行此操作:
DECLARE @sql VARCHAR(MAX) = (SELECT STUFF(
(SELECT CONCAT(' UNION ALL ','SELECT * FROM ',
dbName, '..customermaster ')
FROM databaselist FOR XML PATH ('')), 1, 10, ''))
EXEC(@sql)
dbName
是您的具有数据库名称的列。
答案 1 :(得分:0)
回答
创建表脚本
CREATE TABLE [dbo].[databaselist]
(
[DatabaseName] [varchar](100)
)
插入脚本
Insert into [databaselist]([DatabaseName])
Select 'Database_1' union
Select 'Database_2' union
Select 'Database_3' union
Select 'Database_4' union
Select 'Database_5'
准备脚本
Declare @City varchar(100)
Set @City='chicago'
decLare @id varchar(8000)
SELECT @id = COALESCE( @ID + ' union ' ,' ' )
+'select * from '+
CAST(DatabaseName AS VARCHAR(5000))+'.dbo.customermaster where city =''' +@City+''''
FROM databaselist
Print @id
Exec (@id)
假设