以下脚本运行良好:
DECLARE @SelectClause VARCHAR(100) = 'SELECT id_contato'
,@Query VARCHAR(8000) = ''
SELECT @Query = @Query + @SelectClause + ' FROM ' + TABLE_NAME + ' UNION ALL '
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_NAME LIKE '%zumbi' or TABLE_NAME like '%engajado%')
SELECT @Query = LEFT(@Query, LEN(@Query) - LEN(' UNION ALL '))
EXEC (@Query)
但我需要带有表名称的第二列来标识信息的来源。
我怎样才能做到这一点?
最佳答案
您正在利用查询中已有的 table_name
字段,只需将其添加到 SELECT
中并正确引用它,以便它以字符串文字形式返回:
DECLARE @SelectClause VARCHAR(100) = 'SELECT id_contato'
,@Query VARCHAR(8000) = ''
SELECT @Query = @Query + @SelectClause + ','''+Table_Name+''' AS Table_Name FROM ' + TABLE_NAME + ' UNION ALL '
FROM INFORMATION_SCHEMA.TABLES
WHERE (TABLE_NAME LIKE '%zumbi' or TABLE_NAME like '%engajado%')
SELECT @Query = LEFT(@Query, LEN(@Query) - LEN(' UNION ALL '))
EXEC (@Query)
更新了报价,在 SQL Server 中适用于我。
关于sql - 如何在联合查询中显示表名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35860168/