[英]SQL Server Select from a table returned by a query as list of table names
如果我有以下表格:
PLAYERS
ID Name
== ===========
1 Mick
2 Matt
教练员
ID Name
== ===========
1 Bill
2 Don
我在下面有一个脚本来查找所有包含名为“Name”的列的表:
SELECT t.name AS table_name FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE 'Name'
返回以下内容:
table_name
===========
PLAYERS
COACHES
如何从上面的查询返回的两个表中选择所有行?
您将不得不使用动态SQL,尝试这样的事情:
declare @t table( tablename varchar(50))
declare @sql varchar(max)
set @sql = ''
insert into @t
SELECT t.name AS table_name FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID = c.OBJECT_ID
WHERE c.name LIKE 'Name'
select @sql = @sql + 'Select * From ' + tablename + ' union ' from @t
--remove the trailing 'union'
Select @sql = substring(@sql, 1, len(@sql) - 6)
exec (@sql)
上面的脚本创建并执行以下sql
select * from coaches
union
select * from players
由于我们在这里使用union
,因此所有name
为列的表都具有相同的结构非常重要。
从http://msdn.microsoft.com/en-us/library/ms188001.aspx查看有关动态sql的更多信息
SELECT p.Id,p.Name,c.Id,c.Name
FROM Players p JOIN Coaches c
ON p.Id=c.Id
可能这可以帮到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.