我想询问是否有人知道如何从具有指定列的多个表中获取所有值。
例如我有五个表(t1 ... t5),但只有t2,t3,t4包含列'a' - 如果我不知道哪些表包含它,我如何得到'a'的所有值?< / p>
我想主要针对MySQL解决方案(但也适用于PostgreSQL)。
感谢。
答案 0 :(得分:0)
这应该找到SQL服务器上的所有列。只需在第一个注释区域中设置列名称。
测试我的测试区域。
然后使用以下注释切换打印查询并执行查询。
declare @tab table (id int identity(1,1) primary KEY
,TABLE_CATALOG varchar(50)
,TABLE_SCHEMA varchar(50)
,TABLE_NAME varchar(50)
,COLUMN_NAME varchar(50))
insert into @tab(TABLE_CATALOG ,
TABLE_SCHEMA ,
TABLE_NAME,
COLUMN_NAME)
------- Test me
SELECT TABLE_CATALOG ,
TABLE_SCHEMA ,
TABLE_NAME,
COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
-- Set the Column Name you are looking for.
WHERE COLUMN_NAME = 'name'
----
ORDER BY TABLE_NAME
---- Test me endline
declare @sql varchar(8000), @i int,@count INT
, @TABLE_CATALOG varchar(50)
,@TABLE_SCHEMA varchar(50)
,@TABLE_NAME varchar(50)
,@COLUMN_NAME varchar(50)
set @i=1
select @count= count(*) from @tab
while @i <= @count
begin
select @TABLE_CATALOG=TABLE_CATALOG
,@TABLE_SCHEMA=TABLE_SCHEMA
,@TABLE_NAME=TABLE_NAME
,@COLUMN_NAME=COLUMN_NAME
from @tab where id=@i
set @sql = '
SELECT '+@COLUMN_NAME+' AS Column_Name,*
FROM ['+@TABLE_CATALOG+'].['+@TABLE_SCHEMA+'].['+@TABLE_NAME+']
'
--To Print the SQL Queries to the screen
print @sql
-- Uncomment and comment the Print Above to excute them.
--exec (@sql)
set @i=@i+1
end