gpt4 book ai didi

SQL Server 从查询返回的表中选择作为表名列表

转载 作者:行者123 更新时间:2023-12-02 23:21:57 25 4
gpt4 key购买 nike

如果我有下面这些表格:

玩家

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 作为列的表都具有相同的结构,这一点很重要。

查看有关动态 SQL 的更多信息 http://msdn.microsoft.com/en-us/library/ms188001.aspx

关于SQL Server 从查询返回的表中选择作为表名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17159834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com