簡體   English   中英

SQL Server從查詢返回的表中選擇作為表名列表

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM