2013-01-01 20 views
0

的Microsoft SQL Server选择相同的列名是否可以编写一个查询:从多个表

SELECT * from table1, table 2, table 3 ... 

其中table1.column名状table2.column名状table3.column

我们不知道的名字我们的专栏,我们说任何我们在table1中的专栏。 列名如表2。在像table3.column名

例如列名employee id也许是一列,它是常见的3个表,或publisher id是一个列,它是常见的3个表。

我可以在数据库中找到具有图表的外键或主键,但我想编写一个查询,只显示与列名称相同标题的列。

回答

0

要获得列名:

select sc.name 
from sysobjects so inner join syscolumns sc on so.id = sc.id 
where so.name = 'tableName' 
+0

从SQL Server 2005开始,最好在'sys'模式中使用新的视图,例如'sys.columns'和'sys.tables' –

+0

谢谢HMariD,你的语法在一个表中显示了所有的列名,但是我的问题只是在他们的数据中显示了3个表中相同的列名。像这样的联盟。 – user1940864

+0

user1940864。你必须构建sql来做类似的事情,例如Exec('Select * From'+ @TableName)您从哪里获取TableName,以查看架构上的某个查询。 –

1

没有线索,为什么你这样做,所以有点难以驾驭,但也有一些在数据库中描述数据库表和视图。

Information_Schema.Columns可能是您应该开始的地方。注意这是元数据,如果你想要实际表的内容,你必须更进一步,并建立一些动态的SQL,或同等学历。

Select Column_Name,Count(*) As NumberOfOccurences From Information_Schema.Columns 会为您提供列名以及您经常使用它们的频率。