2016-06-21 6 views
0

を超える選択:私は同時に複数のデータベースに対して実行したいのですが、単一のselect文を持っている複数のデータベースのTSQL

select LastName from TABLE where LastName like '%eloph' 

Iから選択したいすべてのデータベースが同じテーブルが含まれている、同一の構造ではなく、 300以上のものがあります。同じクエリを300回書くのを避けるにはどうすればいいですか?

答えて

2

テーブル名の前にデータベース名を追加することができます。あなたはすべてのデータが返されたい場合は1つの結果は、すべての文とSELECT文連合を追加した結果

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を使用して設定されました。

編集に不利な点がある場合は、必要なものがほとんど生成されます。

は、それはそれをコピーし、あなたのためのSQLを生成し、

+0

ありがとうを助け、それは実際に私が避けることを望んでいるものです。私は必要なコピーとペーストが難しくないと知っていますが、それを300回行うのはちょっと面倒です。それのまわりで何か? – MPJ567

+0

あなたはすべてのデータベースのリストを持っていますか?テーブル内にある場合は、select文を記述してクエリを作成することができます。 – Paparazzi

0

はこの試してみるALL

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

注倍増単一引用符最後のUNIONを削除します:

DECLARE @sql varchar(1000) 

SELECT @sql = 'Select 1' 
EXEC sp_MSforeachdb @sql 
関連する問題