我们在此命名约定中有许多临时表:temp_table_20153112
。从这些表中,有一个名为Manager
的字段。我们想要识别那些Manager IS NULL
的表。
以下是我目前列出的所有以temp_table_
开头的表但我不知道如何重新查询结果集的内容。有什么想法吗?
SELECT t.name AS table_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.name LIKE '%temp_table_%'
AND c.name = 'Manager'
答案 0 :(得分:1)
DECLARE @SQL NVARCHAR(MAX)
SELECT @SQL = STUFF((
SELECT '
UNION ALL
SELECT TOP(1) ''' + name + ''' AS tbl FROM ' + name + ' WHERE Manager IS NULL'
FROM (
SELECT name = QUOTENAME(SCHEMA_NAME(o.[schema_id])) + '.' + QUOTENAME(o.name)
FROM sys.objects o
JOIN sys.columns c ON o.[object_id] = c.[object_id]
WHERE o.name LIKE 'temp_table_%'
AND c.name = 'Manager'
AND c.is_nullable = 1
) t
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 13, '')
--PRINT @SQL
EXEC sys.sp_executesql @SQL
输出 -
SELECT TOP(1) '[dbo].[temp_table_2342]' AS tbl FROM [dbo].[temp_table_2342] WHERE Manager IS NULL
UNION ALL
SELECT TOP(1) '[dbo].[temp_table_234]' AS tbl FROM [dbo].[temp_table_234] WHERE Manager IS NULL
UNION ALL
...
答案 1 :(得分:1)
{{1}}