选择多个数据库TSQL

时间:2016-06-21 19:50:50

标签: sql-server tsql

我有一个选择语句我想同时针对多个数据库运行:

select LastName from TABLE where LastName like '%eloph'

我想要选择的所有数据库都包含相同的表,结构相同,但有超过300个。如何避免写相同的查询300次?

2 个答案:

答案 0 :(得分:2)

您只需将数据库名称附加到表名称前面即可。如果您希望将所有数据作为一个结果集返回,请使用UNION ALL附加结果

Select LastName from dbname1.dbo.TABLE where LastName like '%eloph'
UNION ALL 
Select LastName from dbname2.dbo.TABLE where LastName like '%eloph'
UNION ALL
Select LastName from dbname3.dbo.TABLE where LastName like '%eloph'
UNION ALL
Select LastName from dbname4.dbo.TABLE where LastName like '%eloph'

继续添加Union all和select语句。

或者如果你不喜欢编辑,这应该会产生你需要的大部分内容。

它将为您生成sql,只需复制它并删除最后一个UNION ALL

SELECT 'Select LastName from ' + name + '.dbo.TABLE where LastName like ''%eloph''
UNION ALL ' 
FROM sys.databases

请注意加倍的单引号

答案 1 :(得分:0)

尝试一下:

DECLARE @sql varchar(1000)

SELECT @sql = 'Select 1'
EXEC sp_MSforeachdb @sql