、動的に作成されたSQLとEXEC
を使用します。 INFORMATION_SCHEMA
から、あなたは非常に簡単にメタデータを得ることができます。クエリは名前がp
で始まる作成した文が
SELECT 'Tbl1' AS TheTable,ID FROM [Tbl1]
UNION ALL SELECT 'Tbl2' AS TheTable,ID FROM [Tbl2]
UNION ALL SELECT ...
のように見える、すべてのテーブルを取得する結果は、テーブル名とカラムid
の値を含むリストになります。
あなたは離れて取ることができPRINT
経由でコマンドを確認した後、この
DECLARE @sql NVARCHAR(MAX);
SELECT @sql=STUFF
(
(
SELECT ' UNION ALL SELECT ''' + TABLE_NAME + ''' AS TheTable,ID FROM ' + QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'p%'
FOR XML PATH('')
),1,11,'');
PRINT @sql;
--EXEC(@sql);
を試すことができ--
あなたがこれを必要となぜ、奇妙な要件だ
EXEC
前?実際に必要な場合は、動的SQLを使用します。 –これは、通常、*データ*としてモデル化されていたはずのものが*メタデータ*としてモデル化されている必要があることを示しています(たとえば、列名または表名内)。クエリの対象となるデータがクエリ可能な場所に配置されるようにモデルを修正する方が一般的です(例えば、*の列のデータ値*) –
メタデータクエリをSQLで記述することはできますが、 (ID欄の値) –